staging.inyokaproject.org

Für diese Funktion musst du eingeloggt sein.

PYTHON PYsimpleGUI: Menu

Status: Ungelöst | Ubuntu-Version: Kubuntu 20.04 (Focal Fossa)
Antworten |

michahe

Anmeldungsdatum:
12. Dezember 2013

Beiträge: 789

Hallo,

ich suche unter PYsimpleGUI einen Mehrzeilen-Auswahldialog ähnlich kDialog Menu. Die Aufgabe ist eine Erweiterung zu einer bereits bestehenden Anwendung, deshalb bitte keine anderen GUI-Vorschläge.

Danke und Gruß, Michael

noisefloor Team-Icon

Ehemaliger
Avatar von noisefloor

Anmeldungsdatum:
6. Juni 2006

Beiträge: 28316

Hallo,

was hast du schon probiert und funktioniert nicht so, wie du es dir vorstellst? Zeig' bitte deinen Code.

Welches Framework nutzt du unterhalb von PySimpleGUI?

BTW: die Doku https://www.pysimplegui.org/en/latest/ ist ja echt grottig... als hätte jemand probiert, es extra unübersichtlich zu machen...

Gruß, noisefloor

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 10978

Man sollte das mit einem Dialog, der ein ListBox Element oder einem Radio Element enthält, lösen können. Für Popup-Dialoge mit beliebigem Inhalt scheint es keine einfache Abstraktion zu geben, da musst du ein weiteres Window bemühen: https://www.blog.pythonlibrary.org/2021/01/20/pysimplegui-working-with-multiple-windows/

michahe

(Themenstarter)

Anmeldungsdatum:
12. Dezember 2013

Beiträge: 789

Danke, ich konnte es mit dem ListBox Element lösen.

michahe

(Themenstarter)

Anmeldungsdatum:
12. Dezember 2013

Beiträge: 789

Es funktioniert, aber so richtig zufriedenstellend ist es nicht, da nur auf Maus-Ereignisse reagiert wird; Eingabe von Kennziffern (1-2-8-9) oder Maustasten-Steuerung mit ENTER wird nicht befolgt.:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
#!/usr/bin/env python3
import PySimpleGUI as mod_gui
mod_gui.theme("Default1")
while True:
    MenuOptions = ("1: Funktion 1", "2: Abgleich 2", "8: weitere Option (noch nicht ...)", "9: Beenden")
    MenuLayout = [[mod_gui.Text('Datensammlung und -Analysen\nAnwendungs-Option auswählen:')],
                 [mod_gui.Listbox(MenuOptions, default_values = "8: weitere Option (noch nicht ...)",  size=(90, len(MenuOptions)), key='OptionSEL', enable_events=True)] ]
    MenuWindow = mod_gui.Window("Analyzer", MenuLayout)
    event, values = MenuWindow.read()
    if event == mod_gui.WIN_CLOSED:
        break
    if values['OptionSEL']:
        OptionSEL = int(values['OptionSEL'][0][:1])
        MenuWindow.close()
    if OptionSEL == 1:
        print("Option 1")
# .....
    if OptionSEL == 9:
        exit()

Lässt sich da (Anfänger-verständlich) so erweitern, dass auch Eingabe von Kennziffern (1-2-8-9) und Maustasten-Steuerung mit ENTER befolgt werden?

Antworten |