How to make a ttk.Combobox callback
Solution 1
You can bind to the <<ComboboxSelected>>
event which will fire whenever the value of the combobox changes.
def TextBoxUpdate(event):
...
FriendListComboBox.bind("<<ComboboxSelected>>", TextBoxUpdate)
Solution 2
You can use the trace method to attach “observer” callbacks to the variable. The callback is called whenever the contents change:
import Tkinter
import ttk
FriendMap = {}
UI = Tkinter.Tk()
UI.geometry("%dx%d+%d+%d" % (330, 80, 500, 450))
UI.title("User Friend List Lookup")
def TextBoxUpdate():
if not FriendListComboBox.get() == "":
FriendList = FriendMap[FriendListComboBox.get()]
FriendListBox.insert(0,FriendMap[UserListComboBox.get()])`
def calback():
print("do something")
#Imports the data from the FriendList.txt file
with open("C:\Users\me\Documents\PythonTest\FriendList.txt", "r+") as file:
for line in file:
items = line.rstrip().lower().split(":")
FriendMap[items[0]] = items[1]
#Creates a dropdown box with all of the keys in the FriendList file
value = StringVar()
value.trace('w', calback)
FriendListKeys = FriendMap.keys()
FriendListKeys.sort()
FriendListComboBox = ttk.Combobox(UI,values=FriendListKeys,command=TextBoxUpdate,textvariable=value)`
the callback function will be called when the comobox changes
Marek
Updated on June 05, 2022Comments
-
Marek almost 2 years
I was wondering if there was a way to invoke a call back from a ttk.Combobox when the user selects an item from the drop-down list. I want to check to see what the value of the combobox is when an item is clicked so that I can display the associated dictionary value given the combobox key.
import Tkinter import ttk FriendMap = {} UI = Tkinter.Tk() UI.geometry("%dx%d+%d+%d" % (330, 80, 500, 450)) UI.title("User Friend List Lookup") def TextBoxUpdate(): if not FriendListComboBox.get() == "": FriendList = FriendMap[FriendListComboBox.get()] FriendListBox.insert(0,FriendMap[FriendListComboBox.get()])` #Imports the data from the FriendList.txt file with open("C:\Users\me\Documents\PythonTest\FriendList.txt", "r+") as file: for line in file: items = line.rstrip().lower().split(":") FriendMap[items[0]] = items[1] #Creates a dropdown box with all of the keys in the FriendList file FriendListKeys = FriendMap.keys() FriendListKeys.sort() FriendListComboBox = ttk.Combobox(UI,values=FriendListKeys,command=TextBoxUpdate)`
The last line obviously doesn't work since there is no 'command' for Comboboxes but I am not really sure what I need to do here to get that to work. Any help would be appreciated.
-
Marek about 8 yearsThanks! That is exactly what I needed.
-
Terry Brown over 2 yearsI get
_tkinter.TclError: unknown option "-command"
taking this approach