Was ist ein gutes Programm zum Erstellen von GUIs mit Python?

1 Antwort

Vom Fragesteller als hilfreich ausgezeichnet

kivy wurde vor allem für Oberflächen mit Multi-touch-Oberflächen konzipiert und eignet sich daher gut für die Beschreibung von GUIs für mobile Endgeräte. Die Bibliothek bietet OpenGL-Support und Features für den Einbau grafischer Filter (Shader) oder Animationen, sodass du deine Anwendung etwas dynamischer, kreativer gestalten kannst.

Ein besonderer Vorteil ist die Möglichkeit, die UI mit KV zu beschreiben und auf diese Weise die Anwendungslogik etwas mehr vom View zu trennen.

PyFlaDesk ist im Grunde eine Webanwendung mit Flask, die im Web View einer PyQt-Anwendung läuft. D.h. auf diesem Wege kannst du auch HTML und CSS zur Oberflächenbeschreibung einbringen.

Das hat allerdings den Nachteil, dass sich die Oberfläche zum einen nicht so sehr an das jeweilige OS anpasst und im Vergleich zu einer nativen App ein wenig langsamer ist. Da die Anwendung stets eine extra Rendering Engine und dann noch den Webserver integrieren muss, verbraucht die Anwendung mehr Ressourcen als eine native Anwendung.

PyQt ist in dieser Liste der Riese im Raum. Das Framework beinhaltet ein umfangreiches GUI-Toolkit, bietet aber noch weitere zusätzliche Funktionalitäten (Bsp.: Klassen für die Netzwerkkommunikation; oder für die Entwicklung den QtCreator mit UI-Designer). Ähnlich wie in kivy kannst du die View von der Anwendungslogik trennen, indem du eine deklarative Programmiersprache (QML) einsetzt.

Die Dokumentation / Referenz von PyQt ist m.E. allerdings nicht so gut. Oftmals ist es besser, direkt in die Qt-Dokumentation zu schauen, wobei man berücksichtigen sollte, dass PyQt die Features von Qt immer erst nachziehen muss.

Wenn man kommerziell aktiv werden möchte, sollte man sich genauer mit dem Lizenzsystem befassen. Das gilt an sich zwar für alle Tools, allerdings sorgt die Situation von PyQt zu Qt etwas öfter für Fragezeichen. Dieser Blogartikel sollte ausreichend darüber aufklären.

PySimpleGUI ist meines Wissens extrem leicht und schnell erlernbar und kann wohl auch auf Komponenten von bspw. PyQt/PySide oder wxPython zugreifen. Ich habe mich aber noch nicht weiter damit beschäftigt, als dass ich konkretere Aussagen treffen könnte.

wxPython ist ein Python-Wrapper für die C++-Bibliothek wxWidgets, die für die Darstellung der GUI native Komponenten nutzt. An sich sollte es nicht schwer sein, sich hineinzufinden.

(...) welches bietet ein moderner aussehendes GUI (...)

Entweder du fokussierst dich auf ein natives Look & Feel, wie es z.B. wxPython bieten kann oder du setzt von Anfang an auf ein eigenes Theme.

In PyQt/QML ist beispielsweise ein Material Design Theme implementiert (sowie noch Weitere), für kivy wiederum könnte man sich KivyMD oder FlatKivy dazuholen.

(...) bzw. welches ist generell empfehlenswerter? (...)

Das würde ich tendentiell am Anwendungsfall ausrichten.

Wenn du von Beginn an etwas Komplexeres im Sinn hast, würde ich PyQt empfehlen. Das Framework ist gut ausgereift / stabil und liefert, so wie schon geschrieben, mehr als nur UI-Features zurück.

Wenn du jedoch eine kleinere Anwendung im Sinn hast, die sich in der UI auf Standardkomponenten konzentriert (Button, Label, etc.) und somit keine großartigen Spezialanforderungen hat, mag wxPython sich besser eignen.