Überblick über Python-GUI-Entwicklung (Hallo Welt) - Python Zentral

Python ist gut geeignet für die schnelle Entwicklung von Cross-Plattform-Anwendungen aller Art, und das schließt Anwendungen Desktop-GUI. Es gibt eine Auswahl getroffen werden, wenn eine GUI-Anwendung in Python zu entwickeln beginnen, aber, und dieser Artikel enthält Informationen, die Sie auf dem richtigen Weg zu entnehmen. Wir werden diskutieren, was ernsthafte GUI-Toolkits für Python zur Verfügung stehen, ihre Stärken und Schwächen, und für jeden eine einfache Demo-Anwendung.

Demo „Hallo Welt“ -Anwendung Überblick

Die Demo-Anwendung ist einfach: ein Fenster ein Kombinationsfeld enthält, das die Auswahl „Hallo“, „Auf Wiedersehen“ und „heyo“ präsentiert; ein Textfeld in der freien Text eingegeben werden kann; und eine Schaltfläche, die, wenn sie angeklickt, einen Gruß von den Werten des Kombinationsfeldes und Textfeldes montiert druckt - z.B. "Hallo Welt!" - an die Konsole. Hier ist ein Mock-up des Beispiel-App:

Überblick über Python-GUI-Entwicklung (Hallo Welt) - Python Zentral

Beachten Sie, dass alle Toolkits hier diskutierten, sich zu einem ähnlichen objektorientierten Ansatz für unsere einfache Anwendung verleihen; es ist ein Objekt, das von einem Top-Level-GUI-Objekt, wie beispielsweise eine Anwendung, ein Fenster oder Rahmen erbt. Das Anwendungsfenster ist mit einem vertikalen Layout Widget gefüllt ist, das die Anordnung der Steuer widgets verwaltet. Andere GUI-Toolkits für Python, wie lange veraltete pyFLTK oder die vereinfach EasyGUI, nehmen verschiedene Ansätze, aber die diskutierten Toolkits hier stellen den Mainstream der Python GUI-Bibliothek Entwicklung.

Die Wahl eines Python GUI-Toolkit

Eine Vorsicht: Ein großer Teil der Informationen online zur Verfügung - zum Beispiel in der GUI-Artikel oder Python 2.7 FAQ Python Wiki - ist out-of-date und irreführend. Viele der Toolkits auf diesen Seiten wurden für fünf Jahre nicht gewartet oder mehr, und andere sind zu unreif oder für eine ernsthafte Benutzung nicht dokumentiert. Auch nicht verwenden die Ihre GUI Toolkit Seite Wählen Sie Ich habe über hier und da bandied gesehen; seine Gewichtung Code macht es fast unmöglich, alles andere als WxPython zu wählen.

Wir werden uns an den vier beliebtesten Python GUI-Toolkits: TkInter, wxPython, pyGTK / pygobject und PyQt / pyside.

TkInter ist der große alte Mann der Python GUI Welt, fast mit Python verteilt wurde, da die Sprache gegründet wurde. Es ist plattformübergreifend und allgegenwärtig, stabil und zuverlässig und leicht zu erlernen, hat es einen objektorientierten, brillant Pythonic API, und es funktioniert mit all Python-Versionen, aber es hat auch einige Nachteile:

Eingeschränkte Unterstützung für Theming

Vor Python 2.7 / 3.1, hatte TkInter keine Unterstützung für Theming, so auf jeder Plattform seiner individuellen gezeichneten Widgets wie Motif circa 1985 sahen Da hat die TTK-Modul Themen Widgets eingeführt, die das Aussehen etwas verbessern, aber einige unorthodoxen Kontrollen verlassen, wie wie OptionMenus, an Ort und Stelle.

Kleine Auswahl an Widgets

Tkinter fehlen einige Widgets andere Toolkits zur Verfügung stellen, wie nicht-textuelle Listboxen, real Combo-Boxen, gescrollt Fenster und andere. Einige zusätzliche Kontrollen wurden von Dritten zur Verfügung gestellt, zum Beispiel Tix den Mangel zu liefern. Mock Ihre Anwendung im Voraus, wenn Sie TkInter prüfen, mit und stellen Sie sicher, dass es jede Kontrolle bieten, die Sie benötigen, oder Sie könnten später bekommen verbrannt.

Demo App / Hallo Welt in Tkinter

PyQt / pyside

Qt ist mehr als ein Widget Toolkit; es ist ein plattformübergreifende Anwendungsrahmen. PyQt, sein Python-Schnittstelle, hat es schon seit Jahren, und ist stabil und ausgereift; es hat einige cruft Lauf der Jahre gewonnen, mit zwei APIs zur Verfügung, bekannt als API 1 und API-2, und eine große Anzahl von veralteten Funktionen. Darüber hinaus, obwohl Qt unter der LGPL verfügbar ist, wird PyQt unter den GNU GPL lizenziert Versionen 2 und 3 oder in einer ziemlich teueren kommerziellen Version, Ihre Lizenzoptionen für Ihren Code zu begrenzen.

Pyside ist eine Antwort auf die Nachteile der PyQt. Es wird unter der LGPL veröffentlicht und läßt alle veralteten Funktionen vor PyQt 4.5 sowie die gesamten API 1, aber ansonsten ist fast vollständig kompatibel mit PyQt API 2. Es ist etwas weniger ausgereift als PyQt, aber mehr aktiv weiterentwickelt wird.

Egal, welche Wrapper Sie sich entscheiden, Python und Qt arbeiten schön zusammen. Die modernere API 2 ist ziemlich Pythonic und ist klar, da sehr gute Dokumentation verfügbar ist (obwohl seine Wurzeln in den C ++ Qt Dokumente liegen auf der Hand) und die daraus resultierenden Anwendungen in den letzten Versionen aussehen Zerschlagung, wenn auch nicht ganz heimisch. Es gibt jede GUI-Widget Sie Herz begehrt, und Qt liefert mehr - interessante Klassen mit XML umgehen, Multimedia, Datenbank-Integration und Vernetzung - mit den äquivalenten Python-Bibliotheken für die meisten der zusätzlichen Funktionalität obwohl sind Sie wahrscheinlich besser dran.

Der größte Nachteil eines Qt-Wrapper zu verwenden, ist, dass der zugrunde liegende Qt-Framework ist riesig. Wenn es Ihnen wichtig ist, dass Ihr verteilbare Paket klein sein, wählt TkInter, die nicht nur klein, aber schon einen Teil von Python. Auch während Qt Betriebssystem-APIs verwendet seine Widgets an Ihre Umgebung anzupassen, nicht alle sind streng nativen; WxPython wäre eine bessere Wahl sein, wenn das native Look-and-Feel ein wichtiger Aspekt für Sie. Aber PyQt hat eine Menge zu bieten, und ist sicherlich eine Überlegung wert.

Demo App / Hallo Welt in PyQt / pyside

Hinweis: Für Qt, ich habe verwendet pyside; der Beispielcode würde mit PyQt mit nur ein paar Zeilen Unterschied laufen.

Hallo, ich habe gelernt, Python in den letzten 6 Monaten (ich bin ein erfahrener alter scholl Programmierer, mit C und Assembler Erfahrung). Ich installierte pyside, aber havent ein Tutorial gefunden, die erklärt, wie GUIs deutlich zu erstellen. eine Chance, Sie könnten;
1) ein Anfänger-Tutorial in GUI mit pyside empfehlen
2) Empfehlen Sie einen GUI-Designer, die mit pyside funktioniert, habe ich versucht ein, hatte aber sehr unpredicctable Ergebnisse mit ihm
Dankesehr

Großer, willkommen in der dunklen Seite ;-) zu hören.

2. Mit Abstand die besten GUI-Designer (und einzigen, die ich kenne) für pyside / PyQt sind Qt Designer. Qt Creator (eine IDE) baut diese in, so ist es das gleiche. Es erstellt eine XML-Datei, die Python-Code kompiliert. Es ist im Grunde genauso schnell wie manuell den Aufbau einer GUI und funktioniert super. Aber ich würde empfehlen, dass, wenn Sie mit dem Framework vertraut sind, lehren, sich GUIs zu bauen manuell Container und einzelne Widgets mit Roh-Code verwenden. In der Praxis empfehlen würde ich persönlich immer mit dem Designer, da es viel schneller ist und keine merklichen Performance-Unterschiede. Allerdings werde es Ihnen, wie viele pyside Interna Arbeit unterrichten, und lassen Sie sich viel schneller schrullige Probleme debuggen.

Hey Jackson, ich bin auch auf dem gleichen (schlecht dokumentiert) Weg und wollte etwas fragen: Es scheint, die neueste Version von PyQT ist Version 5, während pyside auf Version 4.8 von PyQT basiert. zwischen den beiden Basis PyQT Versionen und warum (wenn überhaupt) eine würde es vorziehen, Version 5 über 4 Wissen Sie, ob es einen erheblichen Unterschied?

Hey Paul. Qt 5.0 eingeführt einige neue Funktionen. Sie können den Unterschied zwischen PyQt 4.x und 5.x PyQt hier sehen. Es hängt wirklich davon ab, ob Sie die Eigenschaften von Qt 5.0 benötigen. Bedenken Sie jedoch, dass PyQt und pyside sind nicht genau das gleiche, gibt es einige technische Unterschiede.

Beachten Sie auch, dass PyQt ist unter der GPL lizenziert, während pyside unter der LGPL lizenziert ist. Also, wenn Sie eine eigene Anwendung zu entwickeln, müssen Sie eine Lizenz von Flussufern (der Hersteller von PyQt) erwerben.

Pyside (IMHO) hat eine liberalere Lizenz und hat dahinter starke Unterstützung der Gemeinschaft. Während während PyQt gut entwickelt und unterstützt wird, ist es an der Gnade des Unternehmens dahinter. AFAIK pyside nicht Qt 5.0 zur Zeit unterstützen, und es ist nicht einmal in der unmittelbaren Roadmap. So mehr Faktoren ins Spiel kommen.

Hallo es muss ein einfaches Dokument sein, wie man mit einem PyQt zu beginnen (oder pyside) Projekt mit * QtCreator *, oder aber es ist zu viel von einer Hürde, sich selbst zu lehren, denke ich, und nur verwenden, was man verwendet vor (zB QtCreator mit C ++).

Wir sind dabei, etwas mehr Inhalt Ausschieben. Ich werde sicherstellen, dass wir einige Qt Creator Inhalt drin ;-) zu haben.

In Verbindung stehende Artikel