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

Tkinter实现两个Combobox通过字典联动按性别筛选姓名

Tkinter 双Combobox无按钮联动实现

实现原理

直接利用ttk.Combobox内置的<<ComboboxSelected>>虚拟事件,给性别选择框绑定选中回调,每次用户切换性别选项时自动筛选对应人员名单,更新姓名下拉框的选项列表即可,全程不需要额外触发按钮。

修正后完整可运行代码

from tkinter import ttk
import tkinter as tk

window = tk.Tk()  
window.attributes('-zoomed', True)
window.configure(bg='#f3f2f2')

style = ttk.Style(window)
style.theme_use('clam')

# 人员数据统一存入列表,方便遍历筛选
John = {"Name": "John", "Years": 1980, "Gender": "Male"}
Linda = {"Name": "Linda", "Years": 1983, "Gender": "Female"}
Martin = {"Name": "Martin", "Years": 1981, "Gender": "Male"}
people_list = [John, Linda, Martin]

# 性别选择下拉框
gender=ttk.Combobox(window, width = 12)
gender.place(x=5, y=60)
gender['value'] = ["Male", "Female"]
gender.set("Gender?")

# 姓名选择下拉框
all_name=ttk.Combobox(window, width = 12)
all_name.place(x=150, y=60)
all_name.set("All Name")

# 定义联动更新逻辑
def update_names(event):
    current_gender = gender.get()
    # 按选中性别筛选匹配的姓名
    match_names = [person["Name"] for person in people_list if person["Gender"] == current_gender]
    # 更新姓名下拉框的可选选项
    all_name["value"] = match_names
    # 清空原有显示值,避免残留上一次性别对应的不匹配选项
    all_name.set("")

# 给性别下拉框绑定选中事件,选中即自动触发更新
gender.bind("<<ComboboxSelected>>", update_names)

window.mainloop()

实际效果

  • 选中Male选项时,姓名下拉框自动加载John、Martin两个男性姓名
  • 选中Female选项时,姓名下拉框自动加载Linda女性姓名
  • 切换性别过程无卡顿,不需要点击任何额外按钮触发

内容的提问来源于stack exchange,提问作者user18313765

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 15:48:16