Entwicklung von GUIs in Python: Tkinter vs PyQt [geschlossen]

92

Wenn man eine Benutzeroberfläche in Python entwickeln möchte, für welche sollte man sich entscheiden: TkInter oder PyQt?

Ich habe gerade mit TkInter angefangen und konnte einige einfache Benutzeroberflächen mit elementaren Widgets wie Beschriftung, Schaltfläche, Textfeld usw. zum Laufen bringen. Sind Sie nur neugierig, wie gut PyQt mit TkInter verglichen werden kann?

Prost

Arnkrishn
quelle
3
Beachten Sie auch, dass Ihnen neben TkInter und PyQt noch einige andere Optionen zur Verfügung stehen. wxPython fällt mir sofort ein, aber es gibt eine vollständigere Liste unter wiki.python.org/moin/GuiProgramming und eine kürzere Liste der gängigsten GUI-Pakete unter python.org/doc/faq/gui .
Esm

Antworten:

75

PyQt, wenn Sie etwas Ernstes entwickeln, zumal Dinge, die Sie lernen, direkt in die Arbeit mit Qt in anderen Sprachen übersetzt werden, falls dies jemals erforderlich sein sollte, und Qt ist wahrscheinlich das derzeit beste plattformübergreifende Interface-Toolkit.

Es gibt nur zwei echte (potenzielle) Nachteile:

PyQt ist nur unter der GPL verfügbar. Wenn Sie Ihren Code freigeben, muss er unter einer kompatiblen Lizenz, unter den Bedingungen der GPL-Ausnahme von Nokia oder unter einer kommerziellen Lizenz (die Geld kostet) verfügbar sein . Dies steht im Gegensatz zu Qt, das jetzt unter der LGPL verfügbar ist.

PyQt ist in Python-Installationen standardmäßig nicht enthalten. Sie müssen die Bibliothek selbst verpacken. (Ars Technica hat einen guten Artikel dazu für Windows und OS X.)

Sam DeFabbia-Kane
quelle
5
Für Open Source gewährt PyQt der GPL eine Ausnahme, die die Liste der Lizenzen angibt, die Sie verwenden dürfen. Den vollständigen Text der Ausnahme finden Sie hier. Eine Kopie ist im PyQt-Quellpaket enthalten. riverbankcomputing.co.uk/software/pyqt/license doc.trolltech.com/4.4/license-gpl-exceptions.html
sunqiang
Richtig, danke. Ich habe eine Notiz hinzugefügt.
Sam DeFabbia-Kane
16
Nokia hat mit dem Aufbau einer Bibliothek namens PySide begonnen, die nahezu identische Funktionen wie PyQt bietet, jedoch unter der LGPL. Es ist derzeit nur auf * NIX-basierten Systemen verfügbar. Aber Sie können "PyQt4" so ziemlich einfach mit "PySide" in Ihren Importen tauschen und (fast) alles funktionieren lassen. pyside.org
James
Der Link für die GPL-Ausnahme von Nokia ist tot.
Stevoisiak
1
Ab 2019 ist PyQt5 nicht mehr verfügbar, und PySide2 unterstützt die Mehrheit der gleichen Qt-Bindungen unter LGPL.
LightCC
40

PyQt ist jetzt unser Haupt-GUI-Toolkit und nach 1 Jahr Entwicklung möchte ich nicht mehr zu etwas anderem zurückkehren. Es ist stabil, ausgereift, plattformübergreifend und vollständig nativ. Sogar die Systemdialogfelder (zum Beispiel zum Öffnen von Dateien) werden von Ihrem Betriebssystem verwendet.

Ich habe mein XP-Thema und jetzt meine Apps entsprechend angepasst. Dies schafft einen sehr professionellen Look, der mit einem Toolkit wie nicht vergleichbar ist Swing. Die API ist umfangreich und geht über die reine GUI hinaus, beispielsweise über Widgets. Es unterstützt Datenbankkonnektivität, Drucken, Threading (ich habe es verwendet und es funktioniert wie ein Zauber), ... Ich verwende es sogar zum Generieren von PDFs (keine anderen externen Bibliotheken erforderlich). Ich würde Mark Summerfields Buch ' Rapid GUI Programming with Python and Qt ' empfehlen , um Sie auf den neuesten Stand zu bringen. Denken Sie daran, dass Qt mit einem GUI-Builder (Qt-Designer) geliefert wird, der der beste ist, den ich verwendet habe (und ich habe viele davon ausprobiert).
Ich benutze diesen Builder sogar, um Modelle zu erstellen, die den Benutzern angezeigt werden (so einfach ist das!).

Ich habe es 2 anderen Entwicklern hier vorgestellt und sie nicht beschweren hören ...

Wim Verhavert
quelle
10
Eine Einschränkung: Qt sieht nur einheimisch aus. Die Elemente der Benutzeroberfläche werden tatsächlich emuliert (zumindest unter Mac OS X). Das "Gefühl" der grafischen Elemente ist Berichten zufolge aufgrund dieser Emulation manchmal seltsam.
Eric O Lebigot
22

Ich benutze tkinterfür kleine Anwendungen mit einfacher Oberfläche. Ich mag es sehr, auch wenn der Mangel an gutem WYSIWYG Editors ein Problem für eine größere App sein könnte.

Für große Apps PyQt möglicherweise die bessere Wahl. Es hat einen sehr guten Bildschirmdesigner, aber die Lizenzierung kann ein Problem sein.

Schließlich wxPythonkann eine gute Alternative sein, weil es diese Nachteile nicht hat.

luc
quelle
7
Ich habe große kommerzielle Anwendungen mit tk ohne Probleme geschrieben. Es skaliert ganz gut. Es ist nicht besonders gut, wenn Ihre Datensätze Millionen von Elementen enthalten, aber nur wenige Leute entwickeln solche Apps.
Bryan Oakley
2
Danke Bryan für das Feedback. Diese Antwort wurde vor langer Zeit gemacht und ich habe jetzt bessere Erfahrungen mit Tk und ich mag es immer mehr.
Luc
Ich habe meine Antwort aktualisiert. Mehr eine Menge Entwickler-Tools als ein Problem mit der Skalierbarkeit
luc
8

PyQt ist sehr einfach zu erlernen und Dokumente für Qt funktionieren auch für PyQt. Außerdem gibt es Ports für .NET und Java. Es ist also eine Fee, die plattformübergreifend und sprachübergreifend ist. Außerdem haben Sie PyQt in Eric IDE integriert .

Die Unterstützung für CSS-Stile ist auch wirklich brillant.

Sehen Sie sich das neue OpenSuSE-Installationsprogramm an, um zu sehen, was Sie damit tun können.

przemo_li
quelle
4

Mit Tkinter können Sie große GUIs erstellen. Wenn Sie das pytkgen-Modul ausprobieren möchten, können Sie Tkinter-GUIs aus JSON-Definitionen erstellen: https://github.com/tmetsch/pytkgen

Andre
quelle
1

Ich benutze PyQt. Es ist plattformübergreifend, einfach zu handhaben und zuverlässig.

Ich habe TkInter leicht benutzt und sehe keine Punkte, die TkInter besser machen als PyQt.

Kaymatrix
quelle