Tkinter双下拉菜单参数问题:如何同时用Voltage和Phase触发打印True
问题解决思路
原代码存在两个核心问题:
- 两个下拉菜单复用了同一个
Box变量名,导致后定义的StringVar覆盖了前一个,无法同时追踪两个选项的状态 - 回调函数仅接收单个选中值,无法获取另一个下拉菜单的选择结果
修改后的代码
from tkinter import * def edit_or_retrieve(): Window = Tk() Window.title("Main Menu") Window.geometry("550x100") # 分别定义两个独立的StringVar,用于追踪两个下拉菜单的选中值 voltage_var = StringVar(Window) voltage_var.set("VOLTAGE") Voltage = ["120", "208", "240", "277", "480"] Dropdown = OptionMenu(Window, voltage_var, *Voltage, command=lambda x: check_selection(voltage_var, phase_var)) Dropdown.pack(side="left") phase_var = StringVar(Window) phase_var.set("PHASE") Phase = ["SINGLE PHASE", "THREE PHASE"] Dropdown = OptionMenu(Window, phase_var, *Phase, command=lambda x: check_selection(voltage_var, phase_var)) Dropdown.pack(side="left") Window.mainloop() def check_selection(voltage_var, phase_var): # 获取两个下拉菜单的当前选中值 selected_voltage = voltage_var.get() selected_phase = phase_var.get() # 自定义触发条件,示例为电压120且相位为单相时打印True if selected_voltage == '120' and selected_phase == "SINGLE PHASE": print(True) # 可根据需求扩展其他组合条件 # elif selected_voltage == '240' and selected_phase == "THREE PHASE": # print(True) edit_or_retrieve()
关键修改说明
- 为两个下拉菜单分别创建独立的
StringVar(voltage_var和phase_var),确保各自的选中状态能被正确追踪 - 回调函数改为
check_selection,接收两个变量作为参数,每次选中任一下拉菜单时,都会同步获取两个菜单的当前值 - 在
check_selection中自定义触发逻辑,你可以根据实际需求调整电压和相位的组合判断条件
内容的提问来源于stack exchange,提问作者10lbBackPack
相关产品推荐
相关产品推荐

