Empfehlung für GUI Entwicklung

Programmierung für GNOME und GTK+, GUI-Erstellung mit Glade.
Antworten
pythoneer2025
User
Beiträge: 8
Registriert: Dienstag 14. Januar 2025, 13:34

Hallo zusammen,
ich habe gerade das zweifelhafte Vergnügen eine Multiplatform und mehrsprachige grafische Oberfläche für ein Python Programm zu entwickeln (Linux, Apple und Windows) und bin unsicher, was ich da am besten für benutze.

Die GUI wird nicht besonders komplex; ein Fenster mit ein paar einfachen Elementen und ein Setup-Dialog.
Ach ja, und die Möglichkeit des Minimierens in den Info-Bereich (neben der Uhr) wäre schön. (gibt's das überhaupt bei macOS?)

Glade und wxGlade habe ich mir schon mal angeschaut. Das dort benutzte Boxmodel gefällt mir nur so mäßig (bin verwöhnt von Delphi), denke aber, dass ich mich daran gewöhnen könnte. Glade ist mir direkt beim Rumklicken das erste mal abgestürzt. Leider sind die beiden Glades auch nicht untereinander kompatibel.

Den designer-qt6 aus dem (K)Ubuntu Repository habe ich mir auch flüchtig angeschaut und bin erstmal erschlagen von den Möglichkeiten. Die Tatsache, dass man die Controls einfach in das Fenster setzen kann gefällt mir aber gut. Das erinnert mich an Delphi, das ich unter Windows als sehr angenehm und komfortabel zu bedienen in Erinnerung habe. Bei QT ist mir die Lizenzierung nicht ganz klar. (Das Projekt wird kommerziell eingesetzt).
Ich bin auch nicht mehr der allerjüngste, und mit dem Erlernen von sehr komplexen Konzepten tue ich mich leider schwer.

Was würdet ihr einem alten GUI-Anfänger empfehlen?

Nachtrag: Ach ja, mir wäre auch wichtig, dass das Tool langlebig ist. Ich möchte/kann nicht alle halbe Jahre das Programm neu aufdröseln müssen weil die Python Version oder das Toolkit nicht mehr mit dem Alten kompatibel ist.
Benutzeravatar
__blackjack__
User
Beiträge: 13882
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@pythoneer2025: Das man die Widgets beim Qt-Designer einfach so in die Fenster setzen kann ist blöd, weil es Leute verleitet das zu tun, was man aber auch bei Qt nicht macht, weil das nicht wirklich funktioniert. In keinen GUI-Rahmenwerk. Die Zeiten das alle Monitore nahezu gleich gross sind, mit der nahezu gleichen Auflösung, und der Benutzer nichts an den Einstellungen ändert, weil einige GUI-Programme dann nicht mehr bedienbar sind, sind lange vorbei.

Ansonsten: Ich beneide Dich nicht um die Aufgabe. Alle Rahmenwerke haben so ihre Vor- und Nachteile, und Multiplattform ist aufwändig, weil man dass dann auch wirklich auf allen Plattformen testen muss, wenn man das ernst meint.

Langlebig ist auch so ein Ding — das hängt ja an der Kombination von allen beteiligten Komponenten. Programmiersprache, Bibliotheken, GUI-Rahmenwerk, Betriebssystem. Alles davon kann durch Weiterentwicklung Änderungen erfordern.

Und ein Thema was Du Dir wahrscheinlich auch noch ans Bein bindest ist Packaging für die verschiedenen Plattformen. Weiss nicht ob Du das schon auf dem Schirm hast.
“Man wirft uns vor, wir hätten kein Programm, das Programm sei nicht umsetzbar, und die anderen Parteien hätten das alles auch im Programm.“ — Pavel Mayer, Piratenpartei
pythoneer2025
User
Beiträge: 8
Registriert: Dienstag 14. Januar 2025, 13:34

Ja, Packaging habe ich auf dem Schirm, aber bisher erstmal verdrängt :-) Vlt. kann mir dabei dann auch jemand Anderes helfen.
Zu den Widgets im Fenster: So genau habe ich mir den QT-Designer noch nicht angeschaut. Bei Delphi konnte man für die Objekte angeben, ob sie oben, unten, rechts oder links "orientiert" sind oder sich auch mit dem Fenster vergrößern und verkleinern. Das hat da immer ganz hervorragend funktioniert.
Schade, dass Du mir keine Tipps zu meiner Frage geben konntest. Um die Probleme weiß ich schon selbst mehr als mir lieb ist ;-) Manchmal hilft es ja auch einfach naiv anzufangen und dann die Probleme zu lösen wenn sie auftauchen. Aber gerade bei der Wahl des GUI-Builders ist das wahrscheinlich keine gute Wahl.
Benutzeravatar
grubenfox
User
Beiträge: 589
Registriert: Freitag 2. Dezember 2022, 15:49

NUR Kommentare, definitiv keine Empfehlungen!
Empfehlen kann ich noch nichts. Vor einigen Monaten habe ich zwar mit einer Liste angefangen in der ich mir (fast) alles notiere was mir so in Sachen GUI und Python so über'n Weg läuft... ausprobiert und getestet habe ich davon aber noch nichts.
Vielleicht wäre eine Web-Anwendung (bzw. etwas HTLM/CSS-basiertes) auch eine Möglichkeit. Browser bzw. Möglichkeiten um HTML und CSS anzuzeigen gibt es auf allen Betriebssystemen.

* Wie weit es dabei aber mit dem Minimieren funktioniert, kann ich nicht sagen.
* Bei QT wäre es Lizenz-technisch möglicherweise besser PySide6 anstelle von PyQt6 zu nutzen (https://www.pythonguis.com/faq/pyqt-vs-pyside/), aber klar ist mir das Ganze bei QT nun auch nicht.
* Was die Langlebigkeit betrifft, mache ich mir da nicht so viele Sorgen: wenn man sich mittels pyenv (https://github.com/pyenv/pyenv) auf dem Entwicklungsrechner ein aktuelles Python [aktuell vielleicht 3.12 oder 3.13] einrichtet, dann ist man abgekoppelt vom System-eigenen Python (falls der Entwicklungsrechner ein Linux-System ist) und bleibt dann einfach bei seiner Entwicklungs-Python-Version, auch wenn sich auf dem Entwicklungsrechner das eigene System-Python auf neuere Versionen aktualisiert. Dann noch das neue Projekt in ein venv packen um von anderen Projekten unabhängig zu sein und gut ist... (aber vielleicht ist das auch nicht so ganz einfach...)

Wobei man bei vielen Toolkits wohl die Programm-Oberfläche direkt in Form von Python-Code zusammenstellt. Welche Toolkits da einen expliziten GUI-Designer zur Verfügung stellen habe ich mir in meiner Liste nicht notiert.
Sirius3
User
Beiträge: 18185
Registriert: Sonntag 21. Oktober 2012, 17:20

Da Du Dich sicher schon im Netz informiert hast, kennst Du https://stackoverflow.com/questions/293 ... ing-python .
Was die Langlebigkeit betrifft, ist glaube ich das einzige tkinter, das über die letzten Jahrzehnte sich nicht verändert hat.

@grubenfox: html-basiert gibt es auch standalone: https://pywebview.flowrl.com/
pythoneer2025
User
Beiträge: 8
Registriert: Dienstag 14. Januar 2025, 13:34

Danke für deine Kommentare.
Das Letzte zuerst: wxGlade (GTK) erzeugt eine XML-Datei und direkt auch Python-Code (soweit ich das bisher durchdrungen habe). Das kann man dann notfalls auch per Hand pflegen. Das wird es wohl für mich werden, auch wenn ich als KDE-Benutzer Qt eigentlich schicker finde (oder nur KDE?) Deinen Link zu pySide schaue ich mir gerade an.
Ich benutze Linux und auch virtuelle Environments.
Man kann wohl aus dem Programm eine "exe" machen, wenn ich richtig informiert bin. Das dürfte die Probleme auf den Zielsystemen wohl verringern. Damit habe ich mich aber noch nicht befasst und bin für Hinweise dankbar.
pythoneer2025
User
Beiträge: 8
Registriert: Dienstag 14. Januar 2025, 13:34

@Sirius. Nein, den stackoverflow Link kannte ich noch nicht. Vielen Dank.
Weißt Du, ob tkinter Mehrsprachigkeit und verschiedene Platformenunterstützt? Mir kommt das immer ein bisschen primitiv vor. Kann aber auch an mir liegen :-)
Benutzeravatar
__blackjack__
User
Beiträge: 13882
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@pythoneer2025: `tkinter` *ist* ein bisschen primitiv. Da würde ich vorher abklären ob das alle Widgets hat die gebraucht werden. Sonst muss man sich da am Ende einiges selber basteln was man in anderen Rahmenwerken schon fertig bekommt.

`tkinter` selbst hat nichts spezielles für Mehrsprachigkeit, aber das muss man ja auch gar nicht im GUI-Rahmenwerk haben. Python hat `gettext` in der Standardbibliothek, was ja an sich so etwas wie ein Standard ist.

Bei wxWidgets würde ich persönlich gar keinen GUI-Designer verwenden. Die Python-Anbindung hat einiges was in Python implementiert ist, was wxGlade nicht kennt.
“Man wirft uns vor, wir hätten kein Programm, das Programm sei nicht umsetzbar, und die anderen Parteien hätten das alles auch im Programm.“ — Pavel Mayer, Piratenpartei
pythoneer2025
User
Beiträge: 8
Registriert: Dienstag 14. Januar 2025, 13:34

Danke für den Hinweis auf gettext. Das hatte ich gar nicht auf dem Schirm.
Aber ich merke auch: Je mehr Hinweise und Tipps ich bekomme, umso größer scheint das Feld, das es zu beackern gilt: Was passt zu was, was ersetzt was oder baut auf was auf?, ... Und das alles mit 67 Jahren, Uff! Ich sollte mich vielleicht langsam zur Ruhe setzen :-)
Auf jeden Fall werde ich mir mit Sicherheit keine eigenen Widgets mehr basteln. In Delphi habe ich das noch gemacht, aber das ist auch 25 Jahre her.
Benutzeravatar
Dennis89
User
Beiträge: 1498
Registriert: Freitag 11. Dezember 2020, 15:13

__blackjack__ hat geschrieben: Freitag 28. Februar 2025, 11:47 @pythoneer2025: Das man die Widgets beim Qt-Designer einfach so in die Fenster setzen kann ist blöd, weil es Leute verleitet das zu tun, was man aber auch bei Qt nicht macht, weil das nicht wirklich funktioniert.
Man hat aber auch die Möglichkeit mit horizontalen, vertikalen Layouts und Spacern das Ganze so zusammen zu klicken, dass sich das auf unterschiedlichen Bildschirmen gut anpasst. Aber das muss man natürlich bedenken und im Hinterkopf haben.


Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
Benutzeravatar
grubenfox
User
Beiträge: 589
Registriert: Freitag 2. Dezember 2022, 15:49

pythoneer2025 hat geschrieben: Freitag 28. Februar 2025, 13:49 Aber ich merke auch: Je mehr Hinweise und Tipps ich bekomme, umso größer scheint das Feld, das es zu beackern gilt: Was passt zu was, was ersetzt was oder baut auf was auf?,
JA! Was auch der Grund für meine Liste ist.... irgendwann wird es schwierig sich alles zu merken was man sich noch ansehen müsste/wollte. Und wöchentlich wird die Liste um einen Eintrag länger...
pythoneer2025 hat geschrieben: Freitag 28. Februar 2025, 13:49 Auf jeden Fall werde ich mir mit Sicherheit keine eigenen Widgets mehr basteln. In Delphi habe ich das noch gemacht, aber das ist auch 25 Jahre her.
Aber das sind doch mal hilfreiche Infos'.... für das was man dann nicht empfehlen kann. ;) Wegen dem ersten Punkt fällt Kivy möglicherweise raus (hat zwar auch schon fertige Widgets (die ausreichen könnten), aber ich glaube der Schwerpunkt dort liegt eher auf dem Widgets selber bauen. Habe ich aber bisher noch nicht selbst ausprobiert...also alle Angaben ohne Gewähr) und wenn man auf so einen GUI-Editor besteht, wie man ihn von Delphi kennt (schön war die Zeit!), dann reduziert sich meine Liste vermutlich auch deutlich. Ich glaube bei den meisten Projekten hat man nur die Möglichkeit sich seine Oberflächen im Quelltext im Editor zusammen zu setzen. [Ach, habe gerade gesehen dass ich das schon im früheren Posting erwähnt hatte... naja, macht ja nichts...]
Bei den verschiedenen Web-Geschichten ist für mich dann auch immer noch die Frage: kann ich das Teil lokal im eigenen Netz hosten oder muss das auf einem Server im Web laufen?
Benutzeravatar
noisefloor
User
Beiträge: 4118
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

für die Cross-Plattform GUI Entwicklung finde ich ja nach wie vor Flet (https://flet.dev/) gut, was wiederum auf das Flutter Framework aufsetzt. Flet unterstützt Linux, Windows, MacOS, Android, iOS sowie Web als Ziel. Wobei man - im Gegensatz zu anderen Frameworks - auch die entsprechenden Betriebssysteme auf dem Rechner braucht, was im Falle vom MacOS dann auch heißt, dass man Apple Hardware haben muss, siehe https://flet.dev/docs/publish.

Gruß, noisefloor
pythoneer2025
User
Beiträge: 8
Registriert: Dienstag 14. Januar 2025, 13:34

noisefloor hat geschrieben: Dienstag 4. März 2025, 09:20 Hallo,

für die Cross-Plattform GUI Entwicklung finde ich ja nach wie vor Flet (https://flet.dev/) gut, was wiederum auf das Flutter Framework aufsetzt. Flet unterstützt Linux, Windows, MacOS, Android, iOS sowie Web als Ziel. Wobei man - im Gegensatz zu anderen Frameworks - auch die entsprechenden Betriebssysteme auf dem Rechner braucht, was im Falle vom MacOS dann auch heißt, dass man Apple Hardware haben muss, siehe https://flet.dev/docs/publish.

Gruß, noisefloor
Vielen Dank. Das werde ich mir auch mal anschauen. EIn Mac bekomme ich demnächst gestellt.
Benutzeravatar
noisefloor
User
Beiträge: 4118
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Wenn du mehr über Flet erfahren willst: in der Folge 494 des "Talk Python" Podcasts ist ein ca. 1 stündiges Gespräch mit dem Hauptentwickler von Flet. Da erfährt man ziemlich viel, auch wie die Build-Prozess für die verschiedenen Zielplatformem funktionieren und wie man ein Flet App für iOS und Android in die App Stores bekommt.

Gruß, noisefloor
Benutzeravatar
grubenfox
User
Beiträge: 589
Registriert: Freitag 2. Dezember 2022, 15:49

Ach, ich kann es nicht lassen... hier noch eine (noch nicht wirklich)-Empfehlung meinerseits: ich habe mich bisher mit Anvil leider noch nicht so intensiv beschäftigen können, wie ich gerne hätte (dann wüsste ich jetzt vermutlich auch ob ich es empfehlen könnte). Hatte ich in der Vorweihnachtszeit entdeckt und war so beeindruckt vom Webauftritt dass ich mir da gleich einen Account angelegt hatte.
Man muss seine Sachen wohl nicht dort auf dem Anvil-Server laufen lassen, sondern kann das ganze auch auf einem eigenen lokalen Server hosten: https://anvil.works/docs/how-to/app-server bzw. https://github.com/anvil-works/anvil-runtime
Als Web-Anwendung ist es dann relativ egal unter welchem Betriebssystem der Browser läuft, mit dem man auf diese Web-App zugreift.
Antworten