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

Tkinter下拉框选中值无法赋值给变量的问题及相关疑问

问题解决:Tkinter OptionMenu 无法获取选中值及组件命名疑问

核心问题:获取选中值错误

你直接打印tension_var得到的是StringVar对象的标识(比如PY_VAR7),而非它存储的选中列名。要获取实际选中值,必须调用StringVar的get()方法。

你的按钮命令里直接传递了tension_var对象给detect_cycles_irregular(),导致函数收到的是变量对象而非目标字符串。修改代码如下:

tension_var = tk.StringVar()

# 调用tension_var.get()获取实际选中值传入函数
tk.Button(cycle_types_popup, text="irregular cycles",
            command = lambda: [cycle_types_popup.destroy(), self.detect_cycles_irregular(tension_var.get())]).pack(side=tk.LEFT, fill=tk.X, expand=0)

tk.Label(cycle_types_popup, text="Tension (N) variable: ").pack(side=tk.TOP, fill=tk.BOTH, expand=1)
tension_var_dropdown = tk.OptionMenu(cycle_types_popup, tension_var, *self.data.columns)
tension_var_dropdown.pack(side=tk.TOP, fill=tk.BOTH, expand=1)

如果需要打印选中值,正确写法是:

print("选中的列名:", tension_var.get())

额外问题:下拉框组件是否需要命名

不需要。因为你仅需创建并显示该下拉框,后续无需再引用这个组件对象,可直接链式调用pack(),省略变量赋值:

tk.OptionMenu(cycle_types_popup, tension_var, *self.data.columns).pack(side=tk.TOP, fill=tk.BOTH, expand=1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 01:52:11