2009-07-07 10 views
49

Wenn man eine Benutzeroberfläche in Python entwickeln möchte, welche zu gehen: TkInter oder PyQt?Entwickeln von GUIs in Python: Tkinter vs PyQt

Ich habe gerade mit TkInter angefangen und ich konnte einige einfache UIs mit elementaren Widgets wie Label, Button, Textfeld usw. bekommen. Nur neugierig, wie gut PyQt im Vergleich zu TkInter wäre?

prost

+3

Beachten Sie auch, dass es ziemlich viele Optionen neben TkInter und PyQt zur Verfügung stehen. wxPython ist die, die sofort in den Sinn kommt, aber es gibt eine vollständige Liste unter http://wiki.python.org/moin/GuiProgramming und eine kürzere Liste der gängigeren GUI-Pakete, die unter http://www.python.com aufgeführt sind .org/doc/faq/gui /. – esm

Antwort

43

PyQt, wenn Sie entwickeln etwas ernst, vor allem als Dinge, die Sie mit Qt direkt zu arbeiten auch in anderen Sprachen übersetzen lernen, wenn Sie jemals brauchen, und Qt ist wahrscheinlich die beste Cross-Plattform-Schnittstelle Toolkit jetzt verfügbar.

Es gibt nur zwei echte (potentielle) Nachteile: PyQt ist nur unter der GPL verfügbar (dh Ihr Code muss auch unter einer kompatiblen Lizenz verfügbar sein oder unter Nokia's GPL Exception, wenn Sie ihn veröffentlichen) oder unter einer kommerziellen Lizenz (was Geld kostet). Dies steht im Gegensatz zu Qt, das jetzt unter der LGPL verfügbar ist. PyQt ist bei Python-Installationen ebenfalls nicht standardmäßig enthalten - Sie müssen die Bibliothek selbst paketieren. (Ars Technica hat ein good article darauf für Windows und OS X zu tun)

+3

Für Open Source erteilt PyQt eine Ausnahme für die GPL, die die Liste der Lizenzen angibt, die Sie verwenden dürfen. Der vollständige Text der Ausnahme befindet sich hier und eine Kopie ist im PyQt-Quellpaket enthalten. http://www.riverbankcomputing.co.uk/software/pyqt/license http://doc.trolltech.com/4.4/license-gpl-exceptions.html – sunqiang

+0

Richtig, danke. Ich habe eine Notiz hinzugefügt. –

+13

Nokia hat mit dem Aufbau einer Bibliothek namens PySide begonnen, die fast die gleiche Funktionalität wie PyQt, aber unter der LGPL bietet. Es ist derzeit nur auf * NIX-basierten Systemen verfügbar. Aber Sie können "PyQt4" mit "PySide" einfach in Ihre Importe tauschen und (fast) alles funktioniert haben. http://www.pyside.org – James

12

ich verwende tkinter für kleine Anwendungen mit einfacher Schnittstelle. Ich mag es sehr, auch wenn der Mangel an guten WYSIWYG Editor ein Problem für eine größere App sein könnte.

Für große Anwendungen könnte PyQt eine bessere Wahl sein. Es hat einen sehr guten Bildschirm-Designer, aber die Lizenzierung kann ein Problem sein.

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

+4

Ich habe große kommerzielle Anwendungen mit tk ohne Probleme geschrieben. Es skaliert sehr schön. Es ist nicht besonders gut, wenn Ihre Datasets Millionen von Elementen hinzufügen, aber nur wenige entwickeln solche Apps. –

+1

Danke Bryan für Feedback. Diese Antwort wurde vor langer Zeit gemacht und ich habe jetzt bessere Erfahrungen mit Tk und ich mag es mehr und mehr. – luc

+0

Ich habe meine Antwort aktualisiert. Mehr ein Pb von Dev-Tools als ein Problem Skalierbarkeit – luc

24

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

Ich habe mein XP-Thema optimiert und jetzt meine Apps Haut entsprechend. Dies erzeugt ein sehr professionelles Aussehen, nicht vergleichbar mit einem Toolkit wie Swing. Die API ist umfangreich und geht über die reine GUI-Dinge wie Widgets hinaus. Es unterstützt Datenbankverbindungen, Drucken, Threading (ich habe es benutzt und es funktioniert wie ein Zauber), ... ich benutze es sogar um PDFs zu erzeugen (keine anderen externen Bibliotheken werden benötigt). Ich würde Mark Summerfield Buch empfehlen, aber 'Rapid GUI Programming with Python and Qt', um Sie auf Geschwindigkeit zu bringen. Denken Sie daran, dass Qt mit einem GUI-Builder (Qt-Designer) kommt, der der beste ist, den ich verwendet habe (und ich habe viele davon ausprobiert).
Ich benutze diesen Builder sogar, um Mockups zu erstellen, die den Benutzern angezeigt werden (so einfach ist das!).

Ich stellte es auf 2 andere Entwickler hier und habe sie nicht beschweren gehört ...

+5

Ein Vorbehalt: Qt nur * sieht * nativ. 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. – EOL

1

Ich benutze PyQt - Cross-Plattform, einfach mit und zuverlässig zu arbeiten.

Ich verwendete TkInter sehr leicht und ich kann keinen Punkt finden, der tkInter besser als PyQt macht.

3

PyQt ist wirklich einfach zu lernen und docs für Qt funktioniert auch für PyQt auch gibt es Ports zu .NET und Java. Also, es ist eine fee plattformübergreifende und sprichwörtliche Sprache. Auch Sie haben 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 machen können.