Cross-Plattform-GUI-Toolkit zum Bereitstellen von Python-Anwendungen
Gebäude auf:
http://www.reddit.com/r/Python/comments/7v5ra/whats_your_favorite_gui_toolkit_and_why/
Verdienste:
1 - einfache design - /integration - Lernkurve
2 - support /Verfügbarkeit für *nix, Windows, Mac, zusätzliche Punkte für die native l&f, Unterstützung für mobile-oder web -
3 - pythonic API
4 - Qualität der Dokumentation - ich will etwas tun, etwas komplizierter, was nun?
5 - leichter Verpackung, so dass es nicht notwendig ist, um einen vollständigen Installationsprogramm (von py2exe, py2app würde ideal funktionieren und nicht generieren eine Unmenge von MBs-Datei)
6 - Lizenzierung
7 - andere? (bitte angeben)
Anwärter:
1 - tkinter, wie Sie derzeit unterstützt (Stand 2.6, 3.0)
2 - pyttk Bibliothek
3 - pyGTK
4 - pyQt
5 - wxPython
6 - HTML-CGI via Python-basierten framework (Django, Turbogears, web.py, Pylonen...) oder Fügen Sie
7 - andere? (bitte angeben)
InformationsquelleAutor der Frage nachik | 2009-02-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bitte zögern Sie nicht und erweitern Sie diese Antwort.
Tkinter
Tkinter ist das toolkit, das kommt mit python. Das bedeutet, dass Sie bereits alles, was Sie brauchen, um schreiben Sie eine GUI. Was das bedeutet ist, dass, wenn Sie wählen, verteilen Sie Ihr Programm, das wahrscheinlich alle anderen auch schon haben, was Sie brauchen, um das Programm auszuführen.
Tkinter ist ausgereift und stabil und ist (zumindest wohl) Recht einfach zu bedienen.Ich fand es einfacher zu verwenden als wxPython, aber offensichtlich das ist etwas subjektiv.
Tkinter bekommt einen schlechten Ruf für suchen hässlich und veraltet. Während es wahr ist, dass es einfach zu erstellen hässliche GUIs mit Tkinter, es ist auch ziemlich einfach zu erstellen gut aussehende GUIs. Tkinter nicht deine hand halten, aber es hat nicht viel im Weg, entweder. Tkinter sieht am besten auf die Mac-und Windows, da es verwendet native widgets gibt es, aber es sieht OK auf linux zu.
Anderen Punkt über das Aussehen von Tkinter ist, dass für die meisten Teil, Aussehen ist nicht so wichtig wie die Menschen machen es aus zu sein. Die meisten Anwendungen geschrieben, mit toolkits wie Tkinter, wxPython, PyQT, etc sind special-purpose-Anwendungen. Für die Anwendungen, die diese toolkits verwendet, usability Trumpf sieht. Wenn das Aussehen der Anwendung ist wichtig, es ist leicht genug, um aufpolieren eine Tkinter-Anwendung.
Tkinter hat einige features, die andere toolkits nicht annähernd an. Variable Spuren, namens fonts, geometrie (layout) Manager, und die Art und Weise Tkinter Prozesse, die Ereignisse sind noch immer der standard, an dem andere toolkits beurteilt werden sollte.
Auf die Kehrseite der Medaille, Tkinter ist ein wrapper um einen Tcl-interpreter, der läuft in python. Dies ist meist unsichtbar für jedermann entwickeln mit Tkinter, aber es führt manchmal zu Fehlermeldungen, die bewirken, dass diese Architektur. Sie erhalten eine Fehlermeldung, Klagen über ein widget mit einem Namen wie ".1245485.67345" die machen fast keinen Sinn für niemanden, es sei denn du bist auch vertraut mit, wie Tcl/tk funktioniert.
Ein weiterer Nachteil ist, dass Tkinter nicht so viele vorgefertigte widgets wie wxPython. Der hierarchische Baum-widgets in Tkinter ist ein wenig schwach, zum Beispiel, und es gibt keine built-in-Tabelle-widget. Auf der anderen Seite, Tkinter-canvas und text-widgets sind äußerst leistungsfähig und einfach zu bedienen. Für die meisten Arten von Anwendungen, die Sie schreiben, aber Sie werden alles was Sie brauchen. Nur erwarten Sie nicht zu replizieren, Microsoft Word oder Photoshop mit Tkinter.
Ich weiß nicht, was die Lizenz für Tkinter, ich nehme an, das gleiche wie für python als ganzes. Tcl/tk hat eine BSD-style Lizenz.
PyQt
Es ist bauen auf Qt, einem C++ framework. Es ist Recht Fortgeschritten und hat einige gute tools wie den Qt Designer für die Gestaltung Ihrer Anwendungen. Sie sollten sich aber bewusst sein, dass es nicht das Gefühl, Python 100%, aber nahe dran. Die Dokumentation ist ausgezeichnet
Dieser Rahmen ist wirklich gut. Es wird aktiv entwickelt von Trolltech, wer ist im Besitz von Nokia. Die Bindungen für Python entwickelt werden, die von Flussufer.
PyQt ist verfügbar unter der GPL-Lizenz oder eine kommerzielle. Der Preis für eine riverbank PyQt-Lizenz liegt bei etwa 400 euro pro Entwickler.
Qt ist nicht nur ein GUI-framework, hat aber viele andere Klassen auch, kann man eine Anwendung erstellen, indem Sie einfach mit der Qt-Klassen. (Wie SQL, Netzwerk, scripting, ...)
Qt verwendet, um emulieren GUI-Elemente auf jeder Plattform, aber jetzt verwendet native Stile der Plattformen (obwohl es nicht die native GUI-toolkits): siehe die Dokumentation für Mac OS X und der windows XP-Stil
Verpackung ist so einfach wie das ausführen von py2exe oder pyInstaller. Der Inhalt meiner PyQt-app sieht aus wie dies unter windows (habe ich InnoSetup verwendet, die auf der Oberseite der es für die ordnungsgemäße installation):
QT-kommt mit einem widget-designer und sogar die in den neueren Versionen mit einem IDE zu helfen, design Qt software.
PySide
PySide ist ein LGPL Bindung an Qt. Es wurde von nokia als Ersatz für die PyQt GPL.
wxPython
wxPython ist ein binding für Python mit dem wxWidgets-Framework. Dieses framework ist unter der LGPL-Lizenz entwickelt von der open-source-community.
Was ich mir wirklich fehlt, ist ein gutes Werkzeug, um das design der Benutzeroberfläche haben Sie über 3, aber keiner von Ihnen ist nutzbar.
Eine Sache, die ich erwähnen sollte ist, dass ich einen bug gefunden in der Registerkarte-Ansicht-trotz der Tatsache, dass ich nicht alles verwenden, was erweiterte. (Nur Mac OS X) ich denke, wxWidgets ist nicht als Poliert als Qt.
wxPython ist wirklich nur über die GUI-Klassen, gibt es nicht viel anderes.
wxWidgets verwendet native GUI-Elemente.
Einen Vorteil wxPython verfügt über Tkinter ist, dass wxPython hat eine viel größere Bibliothek von widgets, von denen wählen.
Andere
Habe ich keine Erfahrung mit anderen GUI-frameworks, vielleicht hat jemand anderes.
InformationsquelleAutor der Antwort
Ich würde auf jeden Fall zu schätzen, wenn jemand weiß etwas besser als das, was allgemein diskutiert wird; ich sehe, Kopfschmerzen haben finden etwas passendes...
Qt ist toll, aber PyQt nicht scheinen, um die gleiche Entwicklung Ressourcen. Es scheint, haben einige clevere Art zu erzeugen Bindungen, aber ist nicht komplett (z.B. PyKDE terminal kpart) und es ist ein Mangel der Dokumentation (wie es die Entwickler zugeben). Die Kompatibilität mit der Qt-designer ist nett.
wxpython - Steuerelemente sind nicht so schön aus, widget-Bibliothek ist nicht so groß wie KDE.
OpenGL - gar nicht-support-fonts standardmäßig... pygame ist okay, aber opengl ein Zustandsautomat ist zu lästig (Objekt-orientierten Modellen zu verhindern, indem ein Aufruf im falschen Zustand).
XUL - nette Idee, ich wünschte, es funktionierte. Die pyxulrunner tutorial hat bei mir nicht funktioniert, obwohl-die erste, die ich hatte, um die xulrunner /usr/lib path, LD_LIBRARY_PATH, dann hatte es noch Probleme mit "von xpcom Komponenten importieren"...
meine Wunschliste für ein ui-Bibliothek wäre
Meiner Erfahrung, html ist so viel einfacher, etwas zu bekommen, die good-looking up als UI-Bibliotheken.
Bearbeiten - nach der Arbeit mit PyQt 4 für eine Weile, es bekommt den job getan, für eine einfache Benutzeroberfläche. Ich bin derzeit nicht für die Entwicklung für end-Benutzer, also sieht nicht Materie. Die QTextBrowser ist sehr nützlich für die Anzeige von basic-HTML-Tabellen und die Generierung von HTML-links.
InformationsquelleAutor der Antwort gatoatigrado
Ich bin nur Wiegen, um zu sagen, dass TKinter saugt. Es leider scheint, dass es ist vollgepackt mit Python, weil der rückwärts-Kompatibilität.
Die Dokumentation ist schrecklich. Es sieht schrecklich aus. Ich habe laufen in einige bizarre Fehler, der eigentlich Absturz Python.
InformationsquelleAutor der Antwort Unknown
Jython.
Können Sie entweder Swing, Applets oder andere GUI-frameworks für Java-Plattform. Sehen Java Tutorials für Graphical User Interfaces und 2D-Grafiken. Es gibt viele Bücher und Dokumentation wie API-Referenz.
Hier ist ein Hello world-Swing-Anwendung von Eine Einführung in Jython.
Hier ein Jython applet von Todd Ditchendorf zeigt, dass multi-threaded-Partikel-Zeichnung (60 Linien).
Wenn Sie interessiert sind in das zeichnen von Linien und Kreisen können Sie wahrscheinlich schneiden Sie es nach unten auf die Hälfte.
InformationsquelleAutor der Antwort Eugene Yokota
Pro wxPython
InformationsquelleAutor der Antwort Danny