Benutzeroberfläche mit "mehreren GUIs"

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
BurgunderBraten
User
Beiträge: 2
Registriert: Dienstag 3. Juli 2018, 10:28

Dienstag 3. Juli 2018, 12:44

Hallo an die Python-Gemeinde,
ich bin gerade am reinschnüffeln in Python und habe mir ein entsprechendes Anfängerbuch gekauft. Ich möchte mir ein Programm mit einer entsprechenden GUI erstellen und habe mich schon ein wenig mit dem Kapitel über QT/Designer beschäftigt.

Es wird ja in den Büchern immer schön vorgestellt wie ich eine GUI (bzw. Fenster) mit ein paar Buttons, TextBoxen etc. machen kann. Das mit der EINEN Seite bzw. Fenster in dem die Buttons etc. dargestellt werden ist relativ durchschaubar für mich. Jedoch besteht ein Programm ja in den seltensten Fällen aus nur einer Seite, oder einer Ansicht. Also in der Regel habe ich ja irgendwo ein Menü (z.B. links am Bildschirm bzw. am Fenster der Anwendung) und je nachdem was ich anklicke wird der Inhalt in einem anderen Bereich des Fensters dargestellt. Wie wird denn so was realisiert? Hat das was mit dem Modell-View-Controller zu tun oder bin ich da völlig falsch?

Ich hoffe ich konnte es einigermaßen erklären was ich meine.
Da gerade Fussball-WM ist vielleicht folgendes Beispiel: Hauptfenster mit Auswahlmenüs (z.B. Spieltag, Tabelle, ...). Wird Spieltage angeklickt werden eben zig Labels mit den Mannschaften und Texteingabefelder für die Ergebnisse dargestellt. Nach drücken auf OK werden diese z.B. gespeichert und dann wird die Tabelle dargestellt. Werden dann die Labels und Eingabefelder aus der Ergebniseingabe einfach gelöscht und neue dargestellt, oder wird ein komplett neues Fenster geöffnet oder oder......
Oh je, ich glaub das war jetzt auch nicht verständlicher.... :-(

Also mir geht es nicht so sehr um die Details sondern um die generelle Möglichkeiten bzw. die Vorgehensweise mit der man so was realisieren kann, speziell natürlich auch im Zusammenhang mit dem Designer.

Grüße
Benutzeravatar
__blackjack__
User
Beiträge: 538
Registriert: Samstag 2. Juni 2018, 10:21

Dienstag 3. Juli 2018, 13:02

Dynamisch aufgebaute Teile der GUI macht man gar nicht mit dem Designer. Wie auch, da weiss man noch gar nicht wie viele und welche Mannschaften es gibt. Das kann man ja erst per Programm machen.

So generell kann man im Designer für Bereiche wo später dynamisch etwas passieren soll einfach einen Frame einbauen, dem einen Namen geben, und über den Namen dann im Programm weitere Anzeigeelemente dynamisch zu dem Frame hinzufügen oder dann auch wieder löschen.

Allerdings könnte man für Tabellendaten auch einfach die entsprechenden Widgets für Listen, Tabellen, oder Bäume im Designer einbauen und dann im Programm mit einem entsprechenden Model ausstatten.

Für Flächen wo man zwischen verschiedenen Inhalten wechseln können soll, sind auch Tool Box, das Tab Widget, und das Stacked Widget interessant.

Man muss auch nicht die gesamte GUI in einer *.ui-Datei definieren, man kann auch Teile eines Fensters in eigenen *.ui-Dateien definieren und im Progamm dann zusammensetzen.
“The optimist proclaims that we live in the best of all possible worlds;
and the pessimist fears this is true.” — James Branch Cabell
BurgunderBraten
User
Beiträge: 2
Registriert: Dienstag 3. Juli 2018, 10:28

Dienstag 3. Juli 2018, 13:11

Ok, Danke blackjack, da muss ich mich dann mal reinarbeiten wenn ich soweit bin. Kennt jemand einen Link zu Beispielcode zu diesem Thema zum Lernen?
Benutzeravatar
__blackjack__
User
Beiträge: 538
Registriert: Samstag 2. Juni 2018, 10:21

Dienstag 3. Juli 2018, 14:36

Die Qt-Dokumentation hat viele Beispiele. Zwar in C++, aber das muss man dafür nur so weit lesen können als das man das auf Python übertragen kann. Mit der Dokumentation wird man sowieso arbeiten müssen. Und die ist ziemlich gut.
“The optimist proclaims that we live in the best of all possible worlds;
and the pessimist fears this is true.” — James Branch Cabell
Antworten