Combobox, get methode gibt nichts zurück.

Fragen zu Tkinter.
Antworten
KusTuZ
User
Beiträge: 1
Registriert: Montag 3. Januar 2022, 15:06

# Funktion zur erstellung einer Combobox und bekommen des ausgewählten Wertes
def combobox(tab , list):
cb = Combobox(tab, value=list)
cb.pack(pady=10)

# Diese Funktion ist in der ersten Funktion!!
def selected_value_cb(cb):
cb.bind("<<ComboboxSelected>>")
val = cb.get()
return val
val = selected_value_cb(cb)
return cb, val

# Combobox und der ausgewählte Wert
cb, val = combobox(tab1, list.muskelgruppen)
print(val)
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

Du erzeugst eine Combobox und fragst sofort den Wert ab. Der Nutzer hatte noch gar keine Chance, da was einzutragen.
GUIs sind immer Ereignisorientiert. Ein Ereignis tritt ein (Nutzer drückt Knopf), dann wird die Funktion ausgeführt, die Du mit dem Knopf-command verbunden hast, und dort kannst Du dann Deinen Combobox-Wert abfragen.
Du kannst auch das Ereignis ComboboxSelected mit einem Callback verknüpfen.
Für solche Ereignisorientierten Programme braucht man aber zwangsläufig eigene Klassendefinitionen, weil irgendwo muß man ja den Zustand des Programms speichern.

Code: Alles auswählen

import tkinter as tk
from tkinter import ttk

class GUI(tk.Tk):
    def __init__(self):
        tk.Tk.__init__(self)
        self.combobox = ttk.Combobox(self, values=[1,2,3], state='readonly')
        self.combobox.pack()
        self.combobox.bind("<<ComboboxSelected>>", self.select_combobox)
        
    def select_combobox(self, _event):
        print(self.combobox.get())
        
def main():
    gui = GUI()
    gui.mainloop()

if __name__ == "__main__":
    main()
Antworten