Tkinter开发:点击按钮时如何获取OptionMenu当前选中的文本内容
问题原因
- 绑定OptionMenu选中状态的
StringVar被定义为upload_months函数的局部变量,函数执行结束后外部无法访问该变量,无法获取最新选中值。 callback函数仅在OptionMenu选项切换时被系统自动触发,返回值不会被存储,主动调用callback(None)传入的参数是None,自然只会返回None。
修正方案
直接把存储选中值的StringVar设为全局变量,点击按钮时直接读取该变量的当前值即可,不需要额外写callback中转。修正后的完整代码如下:
from tkinter import * root = Tk() root.geometry('300x300') menubar = Menu(root) root.config(menu=menubar) # 全局定义存储OptionMenu选中值的变量 selected_month = StringVar(root) def upload_months(): months = ["January", "Feb","Mar"] selected_month.set('Choose') w = OptionMenu(root, selected_month, *months) B = Button(root, text ="Send", command = get_optionMenu_selection) w.place(x=20, y=10) B.place(x= 105, y=11) def get_optionMenu_selection(): # 直接读取当前选中值即可 value = selected_month.get() print(value) filemenu = Menu(menubar, tearoff=0) filemenu.add_command(label="Upload months", command=upload_months) filemenu.add_command(label="Open") filemenu.add_separator() filemenu.add_command(label="Exit", command=root.quit) menubar.add_cascade(label="File", menu=filemenu) root.mainloop()
运行后每次点击Send按钮,就会在控制台打印当前OptionMenu的选中值,符合预期输出效果。
内容的提问来源于stack exchange,提问作者riram
相关产品推荐
相关产品推荐

