You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 16:47:36