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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 02:01:29