Tkinter Grafische oberfläche

  • Hallo zusammen,

    ich versuche mich gerade in dem Thema Grafische oberfläche

    ich versuche ensprechend deminer grafischen vorlage eine eingabefeld für mein raspberry zu bauen

    aber bei der anordnung der Objekte hab ich nur Probleme


    Mein Display ist auf 640x400 eingestellt , und ist auf ein raspberry 3b+

    wie kann ich die objekte so anordnen wie ich sie haben möchte :


    danke im vorraus

  • MCSITK Vergiss gleich wieder irgendwelche festen Grössen in Pixeln. Das macht man mit `Frame`, `grid()` und/oder `pack()`, und schaut welche Elemente sinnvollerweise ”wachsen” können sollten falls sich der Platz durch ändern der Fenstergrösse ändert.

    Als erstes würde ich klären in wie weit die Funktionalität von den optisch gleich aufgebauten Hälften (links/rechts) verallgemeinerbar ist, so dass man vielleicht eine Klasse schreiben kann, die dann für beide Hälften verwendbar ist.

    “Dawn, n.: The time when men of reason go to bed.” — Ambrose Bierce, “The Devil's Dictionary”

  • Also Grössen brauchen sich nicht zu ändern weil ich mit einbem Display von 640x400 arbeite und alles im vollbild sein soll, welches man weder minimieren noch schlieessen kann.

    Auwahlfeld 1 und textfeld 1 dienen der eingabe , auswahlfeld wählt sie sprache aus und textfeld 1 zeigt den geprochenen text an, oder man gibt es manuell ein

    Auswahlfeld2 undtextfeld dienen der ausgabe das die die ausgabe in der ausgewählten sprache ausgegeben wird, und um textfeld angezeigt wird

    also man könnte jeweils eingabe und ausgabe classifizieren , dem müsste ich damm dem eigentlichen script anpassen, welches schon fertig ist , dies soll ja nur das optische ergänzen

  • Dank der Excel-Tabelle ist es etwas einfacher, mit Grid zu arbeiten, aber man kann sich dennoch ziemlich schnell vertun.

    Hier ein Beispiel für das Layout:

    Ein bisschen Funktionalität ist vorhanden, aber kein OOP.

  • Ich persönlich kann PyQt empfehlen, das nutze ich eigentlich immer für GUIs, auch auf dem Raspberry Pi.

    Zudem gibt es auch einen grafischen Designer, der per "Drag an Drop" die Interfaces zusammen bauen lässt. Das ist vor allem für Einsteiger sehr angenehm.

    Martin Fitzpatrick betreibt mit PythonGUIs eine wundervolle Seite zum Lernen dieses Frameworks.

    Dein Problem kann man dort ganz einfach mit einem Grid Layout, oder einer Kombination von Horizontalen + Vertikalen Layouts realisieren.

    Größen und co. kannst du auch direkt alles im Designer definieren, dann passt das direkt.

  • Ich finde QT5/6 geil, aber komme nicht auf die Idee das einem Anfänger zu empfehlen.

  • @DeaD_EyE

    Ich vesuche diese Auflistung, das in meinen vortest geklappt hat in dem Option Menue einzubinden , kannst du bei deiner Vorlage zeigen wie ich Variable Werte als Auswahlwerte angebenkann ?

    Code
     # Erste Auswahlliste
           
            self.combobox1["values"] = list(LANGUAGES.values())

    Danke im voraus

  • Code
    werte1 = list(LANGUAGES.values())
    Das erste Element als Auswahl gesetzt und das zweite Argument ist die komplette Liste
    OptionMenu(root, auswahl1, werte1, command=select1).grid(
        row=0, column=0, columnspan=3
    )

    Es gibt auch noch das Argument default, welches festlegt, was als Erstes ausgewählt ist.

    Weitere Infos gibt es hier: https://www.pythontutorial.net/tkinter/tkinter-optionmenu/

  • Hallo,

    und falls du bei der 'combobox' bleiben willst:

    Weitere Infos:

    https://docs.python.org/3/library/tkin…er.ttk.Combobox

    Grüße

    Dennis

    🎧 With the music execution and the talk of revolution, it bleeds in me and it goes 🎧

  • @DeaD_EyE

  • Da fehlt der Import von `tkinter`. `LANGUAGES`, `translate_text()`, `recognize_speech()`, und `exit_program()` sind undefiniert. Und ich kann mir kaum vorstellen das die tatsächlich keine Argumente brauchen, denn das alles was da auf Modulebene existiert, also die ganze globalen Variablen, dürfen da nicht stehen. Das Hauptprogramm gehört in eine Funktion. Die heisst üblicherweise `main()`.

    Kommentare sollen dem Leser einen Mehrwert über den Code geben. Faustregel: Kommentare beschreiben nicht *was* der Code macht, denn das steht da bereits als Code, sondern warum er das macht. Sofern das nicht offensichtlich ist. Offensichtlich ist in aller Regel auch was in der Dokumentation von Python und den verwendeten Bibliotheken steht.

    Die Fenstergrösse sollte man wie schon gesagt nicht vorgeben, die ergibt sich aus dem Inhalt. Und falls man die Anwendung im Vollbild darstellen will, sollte man *das* machen, unabhängig davon wie gross der Bildschirm ist.

    Wenn es eine Konstante in `tkinter` für eine Zeichenkette mit einer festen Bedeutung als Argument gibt, sollte man diese Konstante benutzen.

    Bei `StringVar` kann man den Wert gleich beim erstellen übergeben.

    Ungetestet:

    “Dawn, n.: The time when men of reason go to bed.” — Ambrose Bierce, “The Devil's Dictionary”

  • @__blackjack__ : Da fehlt das ganze reigentliche Scripts nicht nur die Imports :). Da es hier nur um die GUI geht

    Wenn alles soweit fehlerfrei läuft werde ich das ganze auch hier zur Verfügung stellen.

    die Funktion : functools import partial , kenn ich noch nicht aber sieht intersannt aus , werd es mal mit einbauen.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!