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

如何获取Tkinter中Menubutton控件选中菜单项的标签名称

Tkinter获取Menubutton关联菜单选中项标签的实现方法

你现有代码无法拿到预期值的核心原因有两个:

  1. button.cget("text")读取的是Menubutton控件自身的显示文本,默认是初始化时传入的"Test",和菜单内的选项没有自动关联
  2. 你在Seite_0函数里写了fenster.destroy(),函数执行时会直接销毁主窗口,根本没有给用户点选菜单、点击按钮的交互机会

Tkinter的Menu控件没有内置属性直接存储最后选中的菜单项,你可以通过变量绑定选中回调的方式实现需求,具体逻辑如下:

  • 初始化一个StringVar类型的变量,专门用来存储最后选中的菜单项标签
  • 给每个通过add_command添加的菜单项绑定选中回调,选中时把当前菜单项的标签写入上述变量,可按需同步更新Menubutton的显示文本,让交互更直观
  • 需要获取选中值的时候,直接读取该变量的内容即可

修正后可直接运行的代码如下:

import tkinter as tk
fenster = tk.Tk()
fenster.geometry("500x150")

def Seite_0():
    # 存储选中菜单项的变量,初始值为空
    selected_item = tk.StringVar(value="")
    button = tk.Menubutton(fenster, text="Test", relief="raised")
    Menü = tk.Menu(button, tearoff=0)

    # 菜单项选中触发的逻辑
    def select_action(label):
        selected_item.set(label)
        # 下一行是可选配置:把Menubutton显示的文本改成选中项,不需要可以直接删掉
        button.config(text=label)

    # 添加菜单项,绑定回调传入自身标签
    Menü.add_command(label="1", command=lambda: select_action("1"))
    # 多个选项按相同格式添加即可,例如:
    # Menü.add_command(label="2", command=lambda: select_action("2"))
    # Menü.add_command(label="3", command=lambda: select_action("3"))

    button["menu"] = Menü

    # 确认按钮点击时打印选中值
    bestaetigen = tk.Button(
        fenster,
        text="Weiter",
        command=lambda: print(selected_item.get())
    )

    button.pack(pady=20)
    bestaetigen.pack()

Seite_0()
fenster.mainloop()

运行上述代码,展开Menubutton选中标签为1的选项后,点击Weiter按钮,控制台就会输出预期结果1。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 12:48:18