Gibt es ein Standardframework für die Entwicklung von Python-GUI-Apps?

20

Es gibt so viele Frameworks zum Schreiben von GUI-Anwendungen mit Python. Aber gibt es einen zentralen Standardrahmen? Zum Beispiel haben wir ein Bündel von .NET / C # in Visual Studio.

Ich denke auch in anderen Perspektiven. Welches GUI-Framework wird in Zukunft in Betracht gezogen, wenn ich ein Interview für einen Python-Programmierer-Job gebe?

Ich frage mich auch, gibt es keine IDE, die die GUI und Python-Sprache integriert. Geschmacksauswahl ist gut, aber Überauswahl wird zur Ablenkung.

RPK
quelle
Nein, es gibt keinen "Standard". .NET ist nicht standardisiert. Es gibt keinen Standardkörper, der einen Standard für .NET geschrieben hat. Es gibt einen Standard für C #: ecma-international.org/publications/standards/Ecma-334.htm . Vielleicht ist "Standard" nicht das, was Sie meinen?
S.Lott
@ S.Lott: Entschuldigung für diesen verwirrenden Begriff. Ich meinte etwas anderes. Für .NET-Anwendungen ist Visual Studio das beste All-i-One-Tool, das unter anderem GUI Builder enthält. Selten wird nach Alternativen zu VS.NET gesucht. Ich meinte in einem ähnlichen Begriff. Jede Python-IDE, bei der die Suche nach einer vollständigen All-in-One-Lösung endet.
RPK
Fragen Sie nach der IDE (wie Visual Studio)? Wenn ja, dann ist "Rahmen" das falsche Wort in der Frage. Bitte klären Sie, wonach Sie fragen.
S.Lott
@S.Lott: Nein ich frage nicht nach Visual Studio. Lassen Sie mich das klarstellen. Nehmen Sie zum Beispiel ASP.NET. Es ist ein Framework, lässt sich aber sehr gut in Visual Studio IDE integrieren. Sie haben alle Werkzeuge auf dem Mitteltisch zur Verfügung. Gibt es etwas für Python?
RPK
Visual Studio ist eine IDE == alle Tools für die Entwicklung an einem Ort. "Ich frage nicht nach Visual Studio" ist das genaue Gegenteil von "Sie haben alle verfügbaren Tools in der mittleren Tabelle. Gibt es etwas für Python?". Entweder fragen Sie nach der IDE (der Python-Version von Visual Studio) oder nach dem Framework selbst. Oder vielleicht fragen Sie nach beidem. Es ist sehr schwer herauszufinden, worum es bei der Frage geht. Bitte aktualisieren Sie die Frage, um genau anzugeben, was Sie möchten.
S.Lott

Antworten:

12

Sie können Win32-API-GUI-Apps in Python schreiben, wenn Sie den gesamten Code für das Boilerplate schreiben möchten : PyWin32-Projekt

Persönlich mag ich wxPython . Es ist plattformübergreifend (wird sowohl unter Linux als auch unter Windows voll unterstützt) und gibt es schon seit geraumer Zeit. Wenn Sie dies verwenden möchten, werfen Sie einen Blick auf BoaConstructor . Das ist die IDE für wxPython (oder besser gesagt, eine in und für wxPython geschriebene IDE). Es ist die einzige RAD-IDE speziell für Python, auf die ich gestoßen bin. Sie ist sogar erwähnenswert. Speichern Sie den Qt-UI-Editor (der Qt-UI-Editor kann sowohl für C ++ als auch für PyQT verwendet werden).

Wie Peter in seiner Antwort erwähnte, ist Tk die defakte GUI für ältere Python-Apps, aber sie sehen für den Endbenutzer wirklich nicht besonders hübsch aus. Es gibt einige Erweiterungen, die es ein wenig besser aussehen lassen und die Möglichkeit bieten, die Benutzeroberfläche zu gestalten. Wenn Sie jedoch keine ältere GUI-App verwenden, würde ich nicht empfehlen, sich damit zu beschäftigen.

pyGTK, ebenfalls bereits erwähnt, wäre eine weitere gute Wahl. Es ist ebenfalls plattformübergreifend, obwohl ich noch keine persönlichen Erfahrungen mit der GTK-Entwicklung unter Windows gesammelt habe. PyQT wäre eine bessere Wahl, IMO - Ich denke, die mit der Qt-Bibliothek erstellten GUIs sehen und funktionieren besser als die mit GTK erstellten. Ich finde auch, dass der Signal- / Slot-Event-Mechanismus von Qt einfacher zu handhaben ist. YMMV.

Es gibt wirklich keinen Standard für die Python-GUI-Entwicklung, zumindest nicht den ich gesehen habe, aber von meinen Python-Entwicklerkollegen, mit denen ich im Laufe der Jahre zusammengearbeitet habe, haben sie mir wxPython und PyQT mehr als alle anderen vorgeschlagen Werkzeugsätze. Ich bin mir nicht sicher, ob es eine erhebliche Anzahl von Python-GUI-Entwicklungspositionen gibt, um ehrlich zu sein. Die meiste Python-Entwicklung, die ich im Laufe der Jahre durchgeführt habe, war serverseitig, aber das heißt nicht, dass es derzeit nicht verschiedene Unternehmen gibt, die Open Source für ihre GUI-Apps suchen.

Wille
quelle
Tkinter-Apps können so gestaltet werden, dass sie akzeptabel aussehen, und oft kaum von nativen Apps zu unterscheiden sind, wenn Sie sich einfach die Zeit dafür nehmen. Ich stimme jedoch zu, dass wxPython ohne Optimierungen besser aussieht. Persönlich bevorzuge ich immer noch Tkinter, weil es für die meisten Menschen gut genug aussieht und meine Produktivität höher ist als mit wxPython.
Bryan Oakley
Tk (Tkinter) unterstützt kein vollständiges Unicode (z. B. Script Shaping), wenn Sie eine l10n / i18n-Anwendung entwickeln möchten.
user.dz
12

Tk war früher der Standard, aber es ist wohl simpel und hässlich. Dann wurde Qt ziemlich populär. Gtk ist ebenfalls möglich und deckt die Favoriten auf Linux-basierten Plattformen ab.

Aber du hast recht, es gibt wirklich keine einfache Antwort. Überauswahl ist in der Open Source-Welt schließlich ziemlich verbreitet.

Peter Eisentraut
quelle
4
Ich würde Qt wählen, nur weil es schöner aussieht als Gtk
TheLQ
1
+1 für eine gut gerundete Antwort. Qt ist schön und mächtig, und zwei Bindungen (lizenzrechtlich) stehen zur Verfügung.
ChristopheD
Es ist wohl nicht mehr hässlich unter Windows suchen. Trotzdem gefällt mir nicht, wie der Code aussieht, den Sie schreiben müssen. Code hässlich. Aussehen, rein einheimisch und endlich ganz vernünftig.
Warren P
5

Es gibt keinen "Standard" und ich stimme zu - die Fülle an Entscheidungen ist ein Schmerz. Was eine integrierte Zwei-Wege-Tools-IDE für Python-GUIs betrifft, frage ich mich auch, warum es anscheinend keine gibt - vielleicht, weil es so viele GUI-Toolkits gibt, die niemand für nur eine von ihnen in eine IDE investieren möchte Sie.

Allerdings bietet PyQt 4.7 mit P3k eine wundervolle Benutzeroberfläche (und viele andere leistungsstarke Funktionen). Siehe http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/introduction.html - "Dies ist das Referenzhandbuch für PyQt 4.8.4. PyQt v4 ist ein Satz von Python-Bindungen für v4 des Qt Anwendungsframework von Nokia. "

PyQt ist weit verbreitet und es gibt einige gute Bücher: siehe http://www.qtrac.eu/pyqtbook.html "Schnelle GUI-Programmierung mit Python und Qt" unter anderem (Buch ist ein bisschen veraltet - muss aktualisiert werden für P3k).

Es gibt zwei schwerwiegende Probleme mit PyQt:

1) Es hat einige deutlich "unpythonische" Eigenschaften, da es nur ein dünner Wrapper für die C ++ Qt-Bibliotheken ist. Aber ich habe P3k-PyQt 4.7 empfohlen, weil einige davon in den "neuesten und besten" Paketen behandelt wurden. Schauen Sie sich diesen Beitrag an:

PyQt-Designprobleme

2) Für die kommerzielle Nutzung fallen sowohl für PyQt als auch für Qt ziemlich hohe Lizenzgebühren an.

Eine aufstrebende Alternative zu PyQt ist PySide von Nokia, ein weiterer Python-Wrapper für Qt, der vollständig Open Source ist (allerdings ohne die Qt-Lizenzierung).

Viel über Qt zu wissen, ist in Bezug auf den Markt keine schlechte Sache, und Sie werden es von PyQt erhalten. Ich würde es (oder PySide) ernsthaft in Betracht ziehen, wenn Sie versuchen, sich für eine GUI-Plattform zu entscheiden, auf der Sie Experte werden .

Unabhängig davon, für was Sie sich entscheiden, würde ich empfehlen, tkinter größtenteils zu vermeiden, auch wenn es bei Python "out of the box" ist, weil es extrem begrenzt ist und IMO ein grobes, veraltetes Erscheinungsbild hat.

HTH

Vektor
quelle
3

pyGTK ist fruchtbar. Es ist ziemlich einfach zu bedienen und macht GUIs, die nicht schlecht aussehen.

dan_waterworth
quelle
Wie reich ist die Gemeinde? Wie schnell kommen die Antworten in seinem Forum an?
RPK
1
@ RPK, ich habe keine Ahnung, ich musste nie um Hilfe bitten, alles ist ziemlich einfach zu bedienen.
Dan_waterworth
Ich bin nicht sicher, ob "produktiv" das richtige Wort ist. "Fülle von Nachkommen, Jungtieren, Früchten usw.; sehr fruchtbar: ein fruchtbarer Birnbaum" Vielleicht "beliebt" oder "großartig".
S.Lott
@ S.Lott, überaus produktiv: "In ähnlicher Weise zu Ergebnissen führen oder in Hülle und Fülle arbeiten". (zweite wiktionary Definition). "Dienen, um zu produzieren; fruchtbar von Ergebnissen; aktiv; als ein produktives Gehirn; eine Kontroverse, die das Böse hervorbringt." (Webster überarbeitetes ungekürztes Wörterbuch (1913 + 1828))
dan_waterworth
produktiv wie in "pyGTK produziert viele Anwendungen?" Scheint angespannt. Menschen produzieren Applikationen. pyGTK ist vielleicht eine beliebte Stiftung, aber sie scheint nicht der Produzent zu sein.
S.Lott
0

Gtk3 ist ein GUI-Framework, das sehr ausgereift ist. Es verfügt über native Python-Bindungen (GObject Introspection) und zahlreiche Dokumentationen . Wenn Sie eine Menge GUI machen, ziehen Sie Anjuta in Betracht . Anjuta verfügt über eine Drag & Drop-Oberfläche, mit der Sie Ihre Widgets einfach einrichten können.

WxWidgets ist ziemlich gut, es gibt jedoch keine einfache Möglichkeit, Python-Rückrufe dynamisch zu generieren, wie dies Anjuta für Gtk tut.

PyGtk wird jetzt zugunsten der Gtk3-Python-Bindungen (GObject Introspection) nicht mehr unterstützt

PyQt ist auch ein Player in der Python-GUI, hat aber keine große Community.

BoaConstructor wird länger gewartet und wäre dumm zu benutzen.

theGtknerd
quelle