# Unix-Nutzer: Shebang einfuegen! import tkinter import tkinter.ttk as ttk win=ttk.tkinter.Tk() win.geometry("500x200") # set window size cbTv = ttk.tkinter.StringVar() # textvariable für combobox cbInList = ["Hello"] # Liste fuer die Listbox der combobox. Das "Hello" # habe ich nur zum Test eingefuegt, um zu sehen # ob die Bindung prinzipiell funktioniert. Beim Erzeugen # der Combobox wertet diese cbInList aus. cbIn=ttk.Combobox(textvariable=cbTv,values=cbInList) # Combobox cbIn.pack(fill="x", padx=5, pady=2) def cbReturn(event): # Unsere Callback-Funktion (siehe letzte Zeile) expr = cbTv.get() # Benutzereingabe holen cbTv.set(expr+" Yeah, es funktioniert") # Kontrolle ob cbTv.set(...) funktioniert cbInList.insert(0,expr) # Benutzereingabe an erste Stelle in unsere list - # NICHT ZUR LISTBOX DER COMBOBOX(!) - hinzufuegen # Ab hier hatte ich dann ein Problem. Naemlich der Listbox der Combobox zu # signalisieren, dass sich die Liste geaendert hat, und die Listbox aktualisiert # werden muss. Folgende (auskommentierte) Zeile hat nicht funktioniert: # cbIn.values = cbInList # *** DAS FUNKTIONIERT NICHT! *** # Wir muessen es folgendermassen machen: cbIn["values"] = cbInList # Beachten Sie die Anfuehrungszeichen um das Attribut "values"! # Hier ist unsere kleine Beispiel-Callback-Funktion, zum Hinzufuegen eines Werts zur # Listbox einer Combobox zu Ende # Jetzt muessen wir noch dafuer; sorgen, dass obige Funktion aufgerufen wird, # wenn der Benutzer die Eingabetaste (in Python mit "<Return>" bezeichnet) drueckt: cbIn.bind('<Return>',cbReturn) # cbReturn aufrufen, wenn Benutzer die Eingabetaste drueckt # Wir binden die -Taste an unsere obige Funktion cbReturn. Python sorgt dann # automatisch dafuer, dass unsere Funktion aufgerufen wird, wenn der Benutzer # die Eingabetaste drueckt. win.mainloop() # Programm laufen lassen - OHNE laeuft es nur in Idle