Technologiewahl für Desktop-App (Mac/Win) mit komplexer UI – Python/Qt sinnvoll oder Alternativen.

TimmyDuese

Ensign
Registriert
Apr. 2022
Beiträge
155
Hallo zusammen,

ich plane die Entwicklung einer Desktop-Anwendung, die primär für meinen persönlichen Gebrauch auf macOS und Windows laufen soll. Es handelt sich um eine Art Aufgabenverwaltung, die ich mit der Zeit mit erweiterten Funktionen ausbauen möchte.

Für die Zukunft stelle ich mir dabei auch komplexere UI-Elemente vor, wie zum Beispiel eine Kanban-Board-Ansicht mit Drag & Drop-Funktionalität, eine Kalenderansicht (die idealerweise auch Daten in den Apple Kalender schreiben kann) oder andere interaktive Diagramme/Ansichten.

Zusätzlich sei erwähnt, dass die Desktop-App später ein Backend für die Synchronisierung von Daten benötigen wird. Parallel dazu existiert bzw. entsteht auch eine iOS-App, für die ich definitiv Swift verwenden werde.

Ich überlege aktuell, für die Desktop-Anwendung Python in Kombination mit Qt (also z.B. PySide6) zu verwenden. Meine Hauptfrage an euch wäre:

Haltet ihr Python/Qt heutzutage für eine sinnvolle und zukunftsfähige Wahl für ein solches Projekt? Insbesondere im Hinblick darauf, dass die Anwendung zwar hauptsächlich für mich privat ist, die Benutzeroberfläche aber das Potenzial haben soll, auch anspruchsvollere Darstellungen, Interaktionen und eine gewisse OS-Integration (wie den Kalenderzugriff) zu bewältigen, um einen kompletten Rewrite der GUI später wegen technischer Limitationen zu vermeiden.

Oder seht ihr aktuell bessere oder passendere Alternativen für dieses Szenario (Desktop, Cross-Platform Mac/Win, Anbindung an ein Backend, Koexistenz mit einer Swift iOS-App, Fokus auf mächtige UI-Möglichkeiten und OS-Integration für die Zukunft)?

Ich bin für alle Ratschläge, Erfahrungen und Denkanstöße dankbar!
 
TimmyDuese schrieb:
Für die Zukunft stelle ich mir dabei auch komplexere UI-Elemente vor, wie zum Beispiel eine Kanban-Board-Ansicht mit Drag & Drop-Funktionalität, eine Kalenderansicht (die idealerweise auch Daten in den Apple Kalender schreiben kann) oder andere interaktive Diagramme/Ansichten.
Nimm dafür eine fertige Web-App. Ich habe zum Beispiel https://radicale.org/v3.html laufen.

Don't reinvent the wheel.
Ergänzung ()

By the way ... im Docker wohlgemerkt, tomsquest/docker-radicale
 
  • Gefällt mir
Reaktionen: sandreas und JumpingCat
Ich rate auf jeden Fall zu QT wenn es auf mehreren Plattformen laufen soll, gerade wenn speziellere UI-Elemente und Widgets gebraucht werden, geht das ziemlich einfach damit. In Qt sind auch diverse andere Pakete integriert wie z.B. sqlite, Netzwerk/Web mit https und es gibt viele Widgets die man nutzen kann. In Python habe ich es noch nicht versucht, nur halt mit dem Qt-Creator in C. Der hat übrigens einen UI-Designer, die erstellten UI's kannst Du bestimmt auch mit Python nutzen.
 
Meine noch nicht ganz feste Meinung: Es gibt ein paar Einschränkungen im Zusammenhang mit Python und dem Qt-Creator. Gründsätzlich funktioniert es aber ganz gut. So wie es aussieht, kann man die gesamte Palette an Qt Widgets nutzen. Bin auch gerade dabei ein Projekt damit zu beginnen.
 
  • Gefällt mir
Reaktionen: CyborgBeta
Kannst du Python, hast du Erfahrung in Qt?
Geht Python auf iOS, wenn du eine App haben willst später?
Gibt es für Qt schon fertige kanban Boards?

Persönlich gehe ich davon aus, dass irgendeine Web Technologie besser geeignet sein dürfte
 
  • Gefällt mir
Reaktionen: kuddlmuddl
Glaube der OP will ohnehin Swift für iOS verwenden obwohl Qt das natürlich auch kann.
 
Zuletzt bearbeitet:
TimmyDuese schrieb:
einen kompletten Rewrite der GUI später wegen technischer Limitationen zu vermeiden.
Eine mögliche technische Limitation könnte die Langsamkeit von Python sein.

TimmyDuese schrieb:
Oder seht ihr aktuell bessere oder passendere Alternativen für dieses Szenario (Desktop, Cross-Platform Mac/Win, Anbindung an ein Backend, Koexistenz mit einer Swift iOS-App,
Du könntest auch Swift auf Windows nutzen und damit den UI inabhängigen Code über die 3 Plattformen teilen:
https://github.com/alfianlosari/windows-samples

Heißt aber, dass die GUI auf Windows und MacOS separat entwickelt werden muss.
Möglicherweise könntest du jedoch die MacOS und iOS App in einem Rutsch entwickeln. Kenne mich aber wenignmit dem Apple Zeug aus, vielleicht kann jemand anderes noch was dazu schreiben.

Vorteile wären:
  • 1 Programmiersprache für alles
  • Code auf allen 3 Plattformen teilen
  • UI Code evtl zumindest über 2 teilen
  • State of the Art UI unter Windows
  • verbesserte Performance
 
Zuletzt bearbeitet:
Warum nicht einfach Qt mit C++? (so wie es eigentlich sein sollte)
Das erfüllt alle Anforderungen und man hat dann auch keine Probleme mit der Performance.

Ich bin selbst nicht der große C++-Profi, aber bei Qt ist das schon was ganz anderes. Sehr angenehm.
 
  • Gefällt mir
Reaktionen: kuddlmuddl
  • Gefällt mir
Reaktionen: Micke und aragorn92
Flutter wäre noch eine Option. Von diesen .NET Lösungen halte ich nichts, würde um alles was von oder für Microsoft .NET gemacht ist meiden, wenn es um das Thema Multi-Platform geht. Das schließt sich irgendwie aus. Ja, es gibt Toolkits wie Mono etc., aber die sind außerhalb von Windows so eingeschränkt, dass sie kaum jemand verwendet. Ich kenne außer Pinta keine andere Software, die damit gemacht wurde.
 
  • Gefällt mir
Reaktionen: aragorn92
Kristatos schrieb:
Von diesen .NET Lösungen halte ich nichts, würde um alles was von oder für Microsoft .NET gemacht ist meiden, wenn es um das Thema Multi-Platform geht. Das schließt sich irgendwie aus. Ja, es gibt Toolkits wie Mono etc., aber die sind außerhalb von Windows so eingeschränkt, dass sie kaum jemand verwendet
Das ist ehrlich gesagt extrem veraltetes denken, .NET Core bzw .NET 8/9 ist vollständig Multiplatform.
 
  • Gefällt mir
Reaktionen: gummiwipfel und aragorn92
Wenn du Java/Kotlin Erfahrung hat wäre mein Rat: https://www.jetbrains.com/de-de/compose-multiplatform/

Großer Vorteil ist die Interoperabilität mit Swift! Könntest also Code sharen.

Aber hier wurden ja schon so viele Möglichkeiten genannt. Kommt am Ende auf die eigenen Skills und Präferenzen an.
 
  • Gefällt mir
Reaktionen: H4110 und aragorn92
vielen Dank für all eure bisherigen Ratschläge zu meiner geplanten persönlichen Desktop-Aufgaben-App (Mac/Windows)! Nochmal kurz die wichtigsten Ziele: Es sollen später komplexe UI-Features (Kanban-Board mit Drag & Drop, Kalender mit OS-Integration z.B. in Apple Kalender schreiben) möglich sein, und ich will unbedingt einen späteren kompletten Rewrite der GUI wegen technischer Limitationen des Frameworks vermeiden.

Nach viel weiterer Recherche und Diskussion (auch mit einer KI hier im Hintergrund) haben sich meine Überlegungen weiter konkretisiert und einige Optionen sind für die Aufgaben-App ausgeschieden:

  • Go/Fyne: Scheint für meine spezifischen Drag & Drop-Anforderungen für ein interaktives Kanban-Board leider nicht auszureichen.
  • Web-basierte Ansätze (Electron, Wails, Tauri etc.): Der zusätzliche Aufwand, einen kompletten Web-Frontend-Stack (HTML, CSS, JavaScript und ein JS-Framework) "nur" für diese Desktop-App neu zu lernen, erscheint mir im Moment zu groß.
  • Andere Optionen (Tkinter, Rust-GUI): Scheinen für meine sehr spezifischen und ambitionierten UI-Ziele entweder zu simpel oder das Ökosystem/die Lernkurve als zu herausfordernd für einen schnellen und sicheren Start.
Mein Fokus für die Aufgaben-App: Das Qt-Framework Ich habe mich jetzt ziemlich auf Qt als UI-Framework für die Aufgaben-App eingeschossen. Es scheint die nötige Mächtigkeit und Flexibilität für meine UI-Visionen zu haben (Kanban, Kalender etc.), und der Qt Designer für den visuellen Entwurf gefällt mir vom Prinzip her sehr gut. Das Hauptziel ist, einen späteren Rewrite wegen fehlender UI-Funktionen zu vermeiden.

Das große Dilemma: Die Sprache für Qt – Python oder C++? Genau hier stecke ich fest und bitte um eure Einschätzung für meine spezifische Situation:

  • Mein Profil:
    • Ich entwickle als Hobby, nicht beruflich.
    • Meine C++ Erfahrung ist sehr gering; ich habe bei sehr kleinen Windows-Tools (mit WinAPI, nicht Qt) erste Schritte gemacht und mich dabei hauptsächlich mit Fehlermeldungen auseinandergesetzt. Ich kann C++ also nicht wirklich selbst entwickeln.
    • Ich habe einen Python-Backend-Dienst für eine andere, existierende iOS Swift App. Python ist also schon entfernt in meinem technischen Umfeld. Zudem habe ich auch ein generelles Interesse an Python für andere Dinge (z.B. Pentesting, Dienste, und überlege, einen neuen Dienst für Web-Scraping/API ebenfalls mit Python umzusetzen).
    • Für die Aufgaben-App selbst ist ein Installer oder das Mitliefern von Abhängigkeiten für mich akzeptabel. (Der Wunsch nach sehr kleinen, einzelnen .exe-Dateien betrifft andere, zukünftige, kleine Windows-Tools, für die ich dann vielleicht Go oder C++/WinAPI nehmen würde – das ist also ein getrenntes Thema.)
  • Python mit Qt (PySide6):
    • Rationale Vorteile für mich: Qt-Power ist voll da. Python ist deutlich zugänglicher als C++. Ich habe die genannten Synergien (anderer Dienst, Pentesting). Der Qt Designer hilft beim UI-Bau. Die OS-Integration (Apple Kalender) scheint mit Python gut machbar. Performance-Sorgen bei Python für Qt-GUIs sind für meine App wahrscheinlich unbegründet.
    • Mein großes Problem hier: Ich habe einen hartnäckigen "faden Beigeschmack" / ein starkes Unbehagen, Python für GUI-Programmierung zu nutzen. Ich kann nicht genau festmachen, woran es liegt, aber es fühlt sich nicht "richtig" an für die UI, obwohl ich mit Python an sich (für Dienste, Skripte) kein Problem habe.
  • C++ mit Qt:
    • Reiz: Wäre Qt "nativ", und mein Python-GUI-Unbehagen wäre weg. C++ ist mächtig. Auch wenn der reine Zeitaufwand mich nicht primär abschreckt und ich für Qt-Lizenzen (falls für andere Tools nötig) prinzipiell zahlen würde.
    • Meine große Sorge/Realität: Die extreme Lernkurve von C++ von meinem jetzigen Stand. Ich habe Angst, hier monatelang nur mit der Sprache selbst zu kämpfen und nicht bei der App voranzukommen. Das wäre für mich "verschwendete Zeit" und das höchste Frustrationsrisiko.
Ich möchte jetzt "richtig anfangen" mit Version 0.0.1 meiner Aufgaben-App (Fenster, Eingabefeld, Button, einfache Liste). Was ratet ihr mir in dieser spezifischen Zwickmühle für den Start mit Qt? Sollte ich versuchen, meine Python-GUI-Aversion (vielleicht durch den Qt Designer und den Fokus auf die Logik) zu überwinden, um die Vorteile der zugänglicheren Sprache und der Synergien zu nutzen? Oder haltet ihr den Weg mit C++/Qt (trotz des immensen Lernaufwands für mich von praktisch Null) für realistischer oder langfristig besser, um Qt ohne Python-GUI-Unbehagen zu nutzen und meine App mit Kanban & Co. sicher umsetzen zu können?

PS: Habe meine Gedanke strukturiert von KI in Form bringen lassen, bitte nicht wundern.
 
TimmyDuese schrieb:
Web-basierte Ansätze (Electron, Wails, Tauri etc.): Der zusätzliche Aufwand, einen kompletten Web-Frontend-Stack (HTML, CSS, JavaScript und ein JS-Framework) "nur" für diese Desktop-App neu zu lernen, erscheint mir im Moment zu groß.
dann kannst C++ auch ausschließen
 
  • Gefällt mir
Reaktionen: aragorn92
Zurück
Oben