如何从Tkinter Combobox关联的字典中获取对应ID值
解决Tkinter Combobox获取对应ID的问题
嘿,这个问题我之前也碰到过,很容易搞定!你现在的Combobox用字典的name(也就是字典的key)作为下拉选项,所以回调里只能拿到选中的name,但要获取对应的id(字典的value),只需要用选中的name去字典里查就行啦。
具体修改步骤:
- 首先确认你的
my_dict结构是{name: id},比如:
my_dict = {"Alice": 101, "Bob": 102, "Charlie": 103}
- 修改你的回调函数,用选中的name作为key去字典中提取对应的id:
def callback(event): selected_name = var_person.get() # 通过name获取对应的ID,用get方法可以避免key不存在时报错 selected_id = my_dict.get(selected_name) if selected_id is not None: print(f"选中的姓名: {selected_name}, 对应ID: {selected_id}") else: print("请选择有效的人员选项")
- (可选)为了防止用户手动输入不在字典里的内容,建议把Combobox设置为只读模式,这样用户只能选择预设选项:
cb = ttk.Combobox(root, values=list(my_dict.keys()), textvariable=var_person, state="readonly")
完整代码示例:
import tkinter as tk from tkinter import ttk root = tk.Tk() root.title("获取Combobox对应ID") # 示例字典:name作为key,id作为value my_dict = {"Alice": 101, "Bob": 102, "Charlie": 103} var_person = tk.StringVar() # 设置state为readonly,避免用户手动输入无效内容 cb = ttk.Combobox(root, values=list(my_dict.keys()), textvariable=var_person, state="readonly") cb.grid(row=0, column=1, padx=10, pady=10) def callback(event): selected_name = var_person.get() selected_id = my_dict.get(selected_name) if selected_id: print(f"选中ID: {selected_id}") else: print("未选中有效项") cb.bind('<<ComboboxSelected>>', callback) root.mainloop()
这样运行后,你选中下拉选项时,就能直接打印对应的ID啦!
内容的提问来源于stack exchange,提问作者John Kirkman
相关产品推荐
相关产品推荐

