GUI: Variablen ändern, speichern und laden

Hier werden alle anderen GUI-Toolkits sowie Spezial-Toolkits wie Spiele-Engines behandelt.
Antworten
maxge
User
Beiträge: 3
Registriert: Sonntag 4. Februar 2018, 11:18

Hallo,

ich benutze Python noch nicht all zu lange und habe mir bisher ein kleines Programm geschrieben, was Fahrzeugparameter als Inputs nimmt und mir als Output Plots und andere Kennzahlen liefert.

Da ein Fahrzeug viele Parameter hat, möchte ich den Input gerne als GUI gestalten, in der ich das Fahrzeug aufrufe und dann dort Werte ändern kann. Ich würde gerne Fahrzeuge laden und speichern können, so dass ich dann auch mehrere Setups miteinander vergleichen kann.

So wie in diesem Beispiel hier habe ich mir das vorgestellt:
https://edoras.sdsu.edu/doc/matlab/tool ... paceio.gif

Verscheidene Reiter, bspw. für Motor, Getriebe etc. und einen Save und Load Button.

Nun habe ich mitbekommen, dass es einige Bibliotheken in Python gibt zum Erstellen einer GUI.

Könnt ihr mir für meinen Zweck eventuell eine Bibliothek empfehlen?
Habt ihr auch Tipps für das Speichern und Laden meines Variablensets?
Ich komme ursprünglich von Matlab und habe mir dort immer .mat Files gespeichert. Gibt es ein Pendant bei Python?

Vielen Dank für jede Hilfe! :)
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ich habe damit noch nicht gearbeitet, aber Kivy und seine Properties sehen gut aus. Von denen bekommt man auch eine Datenstruktur die den Baum der Eigenschaften darstellt. Speichern dann zb in JSON.
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Und als Nachtrag, noch mal ein bisschen Kontext: ich habe schon mit verschiedenen Toolkits für Python gearbeitet, nur eben noch nicht mit Kivy. QT hat mit seinen Modell View Controller Ansatz schon Schritte in die richtige Richtung unternommen, aber gut funktionieren tut das meiner Erfahrung nach nur für Listen oder tabellarische Views. So gut die das Key Value Coding wie auf dem Mac ist leider keins von den denen. Darum die Empfehlung mal Kivy auszuprobieren, weil das zumindest vom Anschein nach ähnlich geht.
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

So. Gerade mal rumgespielt mit Kivy. Neben einer wirklich miesen Installationserfahrung unter Linux (andere Plattformen eher nicht besser fuerchte ich) sind die Properties leider nicht wirklich das, als was ich sie empfunden habe.

Die funktionieren nur mit Widgets zusammen, trennen also nicht sauber Datenmodell und Darstellungslogik. Seufz. Da ist die Welt eigentlich weiter. Rein aesthetisch gefaellt mir das allerding trotzdem besser.

So uneingeschraenkt empfehlbar ist Kivy aber leider nicht, ich muss mal ein Projekt damit machen, um das besser kennenzulernen.

Bleiben ein paar andere Kriterien und Vorschlaege:

-w enn du grosse, komplizierte GUIs bauen willst, nimm Qt. Das hat nen schicken Designer und ist sehr umfangreich. Wenn du tabellarische Daten hast, kannst du die auch an Modelle binden, und sogar Dinge wie eine Datenbank anbinden, welche die Daten darstellt. Koennte fuer dich also was sein.
- mitgeliefert und darum die geringste Huerde darstellend: tkinter. Sieht etwas altbacken aus, aber funktioniert solide. Mit tkinter.ttk hat es auch deutlich mehr Widgets in petto als ich immer dachte.
- Kivy sieht "fresh" aus, und kann touch-Oberflaechen. Falls das dein Begehr ist.
maxge
User
Beiträge: 3
Registriert: Sonntag 4. Februar 2018, 11:18

Danke für deine ausführlichen Empfehlungen bezüglich der GUI.

Zum Speichern und Laden von Variablensets bin ich nun auf pickle gestoßen. Kannst du mir eventuell sagen, welche Vorteile/Nachteile das gegenüber JSON hat?

Danke!!
Tholo
User
Beiträge: 177
Registriert: Sonntag 7. Januar 2018, 20:36

Für mich ist das Thema auch neues Gebiet. Aber beiliegende Beschreibung hat doch einiges in Sachen pickle erklärt.
https://www.python-kurs.eu/python3_dateien.php

Ich nutze trotzdem json, da es von anderen Sprachen ebenfalls gelesen werden kann und in meinem Projekt nutze ich ebenfalls das von __deets__ semi empfohlene Kivy.
Dort findest du einen (zumindest nach meinem derzeitigen Verständnis) nutzbaren json.storage
https://kivy.org/docs/api-kivy.storage. ... vy.storage

Ich will dort ähnliche Daten wie du abspeichern. Motorpwm und Temperaturen. Nach meinen Sichtungen (Vorsicht Python Anfänger!) ist das mit Kivy alles durchführbar
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

JSON hat den Vorteil menschenlesbar und schreibbar zu sein. Und wenn man mit pickle nicht aufpasst, fängst du dir eine Abhängigkeit zu einer Klasse ein die du nicht mehr hast oder sich verändert hat. Würde ich nicht benutzen. Es ist gut für temporäre Daten die man auch problemlos verlieren kann.
Antworten