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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 05:21:00