Tkinter下拉框选中值无法赋值给变量的问题及相关疑问
核心问题:获取选中值错误
你直接打印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
相关产品推荐
相关产品推荐

