Dieser Artikel wurde ursprünglich im Mai 2016 veröffentlicht und mit neuen Informationen aktualisiert.
Es kommt eine Zeit in der Reise der meisten Programmierer, wenn sie bereit sind, über die grundlegenden Beispiele verzweigen und beginnen, eine grafische Oberfläche, um ihr Programm zu bauen.
In Python sind die Schritte zum Einstieg in die GUI-Programmierung nicht sehr komplex, erfordern jedoch, dass der Benutzer einige Entscheidungen trifft., Aufgrund seiner Natur als Allzweck-Programmiersprache mit Dolmetschern, die für jedes gängige Betriebssystem verfügbar sind, muss Python hinsichtlich der Auswahlmöglichkeiten für die Erstellung grafischer Benutzeroberflächen ziemlich unabhängig sein.
Glücklicherweise gibt es viele Optionen für Programmierer, die eine einfache Möglichkeit für Benutzer erstellen möchten, mit ihren Programmen zu interagieren. Bindungen existieren für mehrere UI-Frameworks auf einer Vielzahl von Plattformen, einschließlich solcher, die für Linux, Windows und Mac nativ sind, und viele, die für alle drei funktionieren.,
Bevor Sie weiter gehen, seien Sie für einen Moment Ihr eigener Teufelsanwalt und fragen Sie: Macht es wirklich Sinn, dass Ihre Anwendung überhaupt eine traditionelle grafische Benutzeroberfläche hat? Für einige Programme ist die Antwort offensichtlich. Wenn Ihre Anwendung von Natur aus grafisch ist und entweder für die lokale Ausführung auf einem einzelnen lokalen Computer optimiert ist oder nur sinnvoll ist, sollten Sie wahrscheinlich eine Desktop-GUI erstellen. Oft wird dies durch das, was Sie entwerfen, deutlich.
Aber für allgemeine Programme zählen Sie weder die Befehlszeile noch eine Weboberfläche., Die Befehlszeile bietet viele Vorteile-Geschwindigkeit, Fernzugriff, Wiederverwendbarkeit, Skriptfähigkeit und Steuerung—, die für die Benutzer Ihrer Anwendung wichtiger sein können als eine grafische Oberfläche, und es gibt viele Bibliotheken wie Click, Click und Cliff, die es einfacher machen, großartige Befehlszeilenprogramme zu entwerfen.
In ähnlicher Weise könnte eine Webschnittstelle, selbst für ein Programm, das lokal ausgeführt werden soll, eine Option sein, die eine Überlegung wert ist, insbesondere wenn Sie der Meinung sind, dass Ihre Benutzer Ihre Anwendung möglicherweise remote hosten möchten und Projekte wie Django, Flask oder Pyramid dies alles unkompliziert machen., Sie können sogar eine Bibliothek wie pywebview verwenden, um einen dünnen Wrapper um eine Webanwendung in einem nativen GUI-Fenster zu platzieren.
Alternativ können Sie ein Framework wie Pyforms verwenden, um eine konsistente Erfahrung über das Web, die Befehlszeile und den Desktop hinweg mit einer einzigen Codebasis zu erstellen.
Immer noch sicher, dass Sie eine GUI erstellen möchten? Großartig, hier sind ein paar fantastische Open-Source-Bibliotheken, um Ihnen den Einstieg zu erleichtern.,
PyQt, PySide und Qt für Python
PyQt implementiert die beliebte Qt-Bibliothek, und wenn Sie also mit der Qt-Entwicklung in einer anderen Sprache vertraut sind, möglicherweise aus der Entwicklung nativer Anwendungen für KDE oder eine andere Qt-basierte Desktop-Umgebung, sind Sie möglicherweise bereits mit Qt vertraut. Dies eröffnet die Möglichkeit, Anwendungen in Python zu entwickeln, die auf vielen Plattformen ein vertrautes Erscheinungsbild haben und gleichzeitig die Tools und Kenntnisse der großen Qt-Community nutzen.
Qt ist in der Entwickler-Community gut etabliert und verfügt über Tools, die dies widerspiegeln., Das Schreiben von Python-Anwendungen um Qt bedeutet, dass Sie Zugriff auf QtCreator haben, das über einen Designer-Modus zum Generieren von Code für das Layout Ihrer Anwendung verfügt.
PyQt ist sowohl unter einer kommerziellen als auch unter einer GPL-Lizenz dual lizenziert, nicht anders als Qt project selbst, und das primäre Unternehmen, das PyQt unterstützt, bietet eine Lizenz-FAQ, um zu verstehen, was dies für Ihre Anwendung bedeutet.
Für eine weitere Option zur Verwendung von Qt-Bibliotheken mit Python sollten Sie Qt für Python (allgemein bekannt als PySide2) in Betracht ziehen, das unter der LPGL verfügbar ist.,
Tkinter
Wenn es ein einzelnes Paket gäbe, das als „Standard“ – GUI-Toolkit für Python bezeichnet werden könnte, wäre es Tkinter. Tkinter ist ein Wrapper rund um Tcl / Tk, eine beliebte grafische Oberfläche und Sprache Paarung zuerst in den frühen 90er Jahren populär. Der Vorteil der Wahl Tkinter ist die große Anzahl von Ressourcen, einschließlich Bücher und Codebeispiele, sowie eine große Gemeinschaft von Benutzern, die in der Lage, Ihnen zu helfen, wenn Sie Fragen haben. Einfache Beispiele sind leicht zu erlernen und ziemlich menschenlesbar.,
Tkinter ist unter der Python-Lizenz verfügbar, zusätzlich zur BSD-Lizenz von Tcl / Tk.
wxPython
wxPython bringt die plattformübergreifende wxWidgets-GUI-Bibliothek von ihrem nativen C++ nach Python. wxPython sieht in verschiedenen Betriebssystemen etwas nativer aus als Tkinter, da es die Widgets des Hostsystems zum Erstellen einer GUI verwendet. Es ist ziemlich einfach, auch mit zu beginnen, und hat eine wachsende Entwickler-Community. Möglicherweise müssen Sie wxPython mit Ihren Anwendungen bündeln, oder der Benutzer muss es selbst installieren, da es nicht automatisch mit Python installiert wird.,
wxPython verwendet die wxWindows-Bibliothekslizenz seines übergeordneten Projekts, das OSI-zugelassen ist.
Python GTK+ 3
Früher als PyGTK bekannt, bietet das Python GTK+ 3-Projekt Python-Bindungen an GTK-Objekte (Fenster, Widgets usw.). GTK+ wird am bekanntesten als Grundlage für den GNOME-Desktop verwendet, ist jedoch für eigenständige Anwendungen unter Linux, Windows und Mac verfügbar. Mit Python GTK+ 3 ist das gleiche Framework für Ihre Python-Projekte verfügbar.
Wenn Sie Python GTK + 3 verwenden, können Sie viele der gleichen Entwicklungstools verwenden, die für GTK+ selbst erstellt wurden., Dazu gehört insbesondere Glade, ein Interface-Designer für GTK+ – Anwendungen. Schnittstellen, die in Glade entworfen wurden, werden als XML gespeichert und vom GtkBuilder-Objekt in Ihrem Anwendungscode verwendet, aber die Schnittstelle, die Sie verwenden, ist Drag-and-Drop, so dass es einfach ist, eine dynamische und reaktionsschnelle Benutzeroberfläche zu erstellen, ohne das, was Sie in Ihrem Kopf sehen, in Layoutcode übersetzen zu müssen.
Kivy
Kivy wurde für schnelle Entwicklung und moderne Geräte entwickelt und ist ein Toolkit für Linux (einschließlich Raspberry Pi), Windows, Mac und Android., Das Projekt konzentriert sich auf „innovative Benutzeroberflächen“ und wurde für Multimedia-Anwendungen wie Musik-Controller-Apps für Telefone bis hin zu Whiteboarding-Anwendungen verwendet, die die gesamte Wand eines Besprechungsraums einnehmen.
Kivy verfügt nicht über ein visuelles Layout-Programm wie QtCreator und Glade, sondern verwendet eine eigene Designsprache, mit der Sie das UI-Layout Codeobjekten zuordnen können. Dies macht es Ihnen leicht, die Klassen und Funktionen in Ihrer Anwendung (sowohl mental als auch im Layoutcode) zu unterteilen., Kivy beherbergt auch die Kivy Garden, ein Repository von benutzerdefinierten Widgets und Add-ons, also, wenn Sie daran denken, etwas zu schaffen, die Kivy selbst nicht bietet, können Sie es bereits im Garten existiert.
Dies sind nicht die einzigen Möglichkeiten, die Sie zur Verfügung haben, nicht einmal von einem langen Schuss. Weitere Optionen finden Sie auf der Seite „GUI-Programmierung in Python“ im offiziellen Python Software Foundation-Wiki, in dem Dutzende anderer Tools aufgeführt sind. Lösungen sind verfügbar, um Python an viele verschiedene Widget-Bibliotheken und GUI-Tools wie FLTK, FOX und viele andere zu binden., Während Anfänger wahrscheinlich Projekte vermeiden sollten, die nur teilweise Implementierungen bereitstellen oder nicht mehr aktiv gepflegt werden, gibt es viele gute Tools für eine Vielzahl von Situationen.
Viele der Optionen gibt es für traditionelle Anwendungen, die auf dem Fenster Look and Feel ihrer übergeordneten Desktop-Umgebung nehmen, aber es gibt auch Zeiten, wenn Sie etwas ganz anderes tun möchten, zum Beispiel innerhalb eines Videospiels. Es gibt auch großartige Bibliotheken für diese Situationen, wie pygame, Pyglet und Panda3d.
Leave a Reply