Platformunabhängige GUI - Progressive Web App?

Beast1002

Newbie
Registriert
Dez. 2019
Beiträge
2
Hallo zusammen,
ich habe mittlerweile ein relativ komplexes Programm in Python geschrieben.
Dieses wertet z.B. Daten von einem Fax aus und steuert ebenfalls Haustechnik wie Licht etc. an.
Nun möchte ich ein User Interface zum steuern des Programms und zum Anzeigen von diversen Daten entwickeln.
Angefangen habe ich hier mit PyQT, bin mittlerweile aber auf C# mit XAML umgestiegen.
Die Kommunikation zwischen GUI und Programm findet nun über Sockets (ZeroMQ) statt.
Mit der GUI-Lösung bin ich mittlerweile aber leider nicht zufrieden.
Ich hätte gerne eine GUI die auch auf anderen Geräten (iOS, iPadOS, Android, Windows etc.) läuft.
Jedoch möchte ich nicht für jede Platform alles neu entwickeln.
Auf der Suche nach einer Lösung bin ich auf Progressive Web Apps (PWA) gestoßen.
Diese scheinen mir eine interessante Lösung vielleicht auch für mein Problem zu sein.

Nur aktuell fehlt mir einfach eine gute Übersicht, wie ich mit einer PWA am sinnvollsten starten soll.
Hat jemand hier vielleicht schon Erfahrung mit PWAs und kann mir ein paar hilfreiche Links geben?
Aktuell fehlt mir auch noch eine Idee wie ich die PWA mit meinem Programm verbinden kann.
Funktioniert dies weiterhin über Sockets?

Vielleicht hat jemand aber auch eine andere Idee, wie ich eine Platformunabhängige GUI mit möglichst geringen Aufwand machen kann.
Das Programm ist nur ein "Freizeitprojekt" und wird innerhalb eines Vereins genutzt.

Vielen Dank für eure Hilfe!
 
Welche Probleme gab es mit PyQt? Waere jetzt so direkt mein Tipp gewesen.
 
Beast1002 schrieb:
Aktuell fehlt mir auch noch eine Idee wie ich die PWA mit meinem Programm verbinden kann.
Funktioniert dies weiterhin über Sockets?
PWAs kommunizieren über einen Webservice mit dem Backend, als keine Sockets sondern HTTPS. Im Prinzip sind das ja "nur" Webseiten die ein paar mehr Berechtigungen haben und wie eine App installiert werden (und man damit nicht mehr sieht das man eigentlich trotzdem nur nen Webbrowser offen hat)
 
m.c.ignaz schrieb:
Welche Probleme gab es mit PyQt? Waere jetzt so direkt mein Tipp gewesen.
Bin ich vielleicht auch etwas falsch rangegangen an die Sache.
Ich hatte auf jeden Fall Probleme mit der Wartung der GUI, da gerade am Anfang immer mehr Features dazugekommen sind.
Aber z.B. ist es nicht möglich iOS / Android mit dieser Lösung einfach umsetzen zu können (soweit ich das verstanden habe)
 
PWAs sind hier auf jeden Fall richtig. Kommunizieren kannst du über HTTP und/oder WebSockets.

Hast du schon Erfahrung mit JavaScript?
 
Kivy schon mal angeschaut?
https://kivy.org/#home

Kivy runs on Linux, Windows, OS X, Android, iOS, and Raspberry Pi. You can run the same code on all supported platforms.

Ansonsten fiel mir noch QML ein.
https://doc.qt.io/qtforpython/tutorials/basictutorial/qml.html
Ergänzung ()

QML gehört zu Qt. Allerdings unterscheidet es sich stark von klassischen Widgets. In vielerlei Hinsicht.:p

Wäre natürlich praktikabel weiterhin Python und PySide 2 zu benutzen. Aber Android, bzw. IOS Apps damit zu entwickeln habe ich in der Hinsicht zu wenig Erfahrung. Ich glaube schon, dass man da einiges an Know How haben muss.

Kivy ist auch Python. Liest sich ja schon gut, auch wenn es jetzt nicht soooo verbreitet ist.
 
Zuletzt bearbeitet:
Hast du dir schonmal Xamarin (C# + XAML) angeschaut? Evtl. reicht das ja für deine Bedürfnisse.
 
Reicht es dir nicht vielleicht, wenn die GUI über den Browser erreichbar ist? Dann könntest du auf Web-Application Frameworks wie Django (Python) zurückgreifen.
 
  • Gefällt mir
Reaktionen: Beast1002
Beast1002 schrieb:
Vielleicht hat jemand aber auch eine andere Idee, wie ich eine Platformunabhängige GUI mit möglichst geringen Aufwand machen kann.
Framework fürs Web suchen und loslegen.

Angular (echtes Framework)
React
(evtl. Vue.js)

Neuerdings gibts auch Flutter:
Das würde es mit Hilfe einer Metasprache neben Web auch ermöglichen direkt native Anwendungen für langfristig alle Platformen (Android, Web, Windows) zu generieren.
Ich habs noch nicht ausprobiert, aber das wäre etwas was ich mir bei meinem nächsten Projekt in dieser Richtung ansehen würde.


BeBur schrieb:
Dann könntest du auf Web-Application Frameworks wie Django (Python) zurückgreifen.
Hat aber dann wenig mit PWAs zu tun. PWAs sind Apps die beim Client laufen.
Django läuft afaik via Server Side rendering (Totale Abhängigkeit vom Server -> Server down / kurz nicht mehr erreichbar -> nix geht mehr)
Selbiges gilt für den Xamarin-Vorschlag, und dem Python Zeug.
Ergänzung ()

Beast1002 schrieb:
Funktioniert dies weiterhin über Sockets?
Entweder Websockets oder direkt über eine Abstraktion dessen:
  • REST API -> man sendet i.d.R. Dateien im JSON-Format rum -> gibt es alles schon fertig (konventioneller Weg)
  • grpc-web -> man definiert bestimmte Datentypen in einer IDL(Protobuf), für welche dann automatisch der Code für die Datentypen und die Kommunikation zwischen jeden Programmen generiert werden würde (immer häufiger anzutreffen; wobei ich letzteres auch schon in Frameworks für manche Sprachen gesehen habe)
  • GraphQL -> interessante Alternative zur REST-API -> kommt auf den Anwendung an, was geeigneter ist
  • Web-Sockets verwendet man eher selten. Dort tauscht du Nachrichten aus, die du jedoch selbst parsen und interpretieren musst, da es keinem Standard folgt -> scheint aber sehr ähnlich zu dem was du schon verwendest (zeroMQ)
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Beast1002 und Bagbag
Beast1002 schrieb:
Angefangen habe ich hier mit PyQT, bin mittlerweile aber auf C# mit XAML umgestiegen.

Dann solltest Du den Titel des Threads ändern, denn XAML ist keineswegs plattformunabhängig.
Linux fehlt als Build-Target und wird wohl auch nicht in naher Zukunft bedient.
Ich bin aus diesem Grund bei Angular mit Material gelandet und versuche gerade, herauszufinden wie Electron da reinpasst.
 
Zurück
Oben