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

如何在Python的Tkinter中配置菜单?代码运行窗口未显示

解决Tkinter菜单栏配置及窗口显示问题

问题分析

  • 定义了menubar()方法但未调用,导致菜单栏从未被初始化
  • menubar()方法中main_m.add_cascade(label='File', menu=main_m)参数错误,应该将子菜单file_m绑定到File选项,而非主菜单自身,这个错误会导致菜单无法正常渲染

修正后的代码

import tkinter as tk

class GUI(tk.Tk):
    def __init__(self):
        tk.Tk.__init__(self)
        self.title("Yash gui")
        self.geometry("700x500")
        self.maxsize(700, 500)
        self.minsize(700, 500)
        # 初始化菜单栏
        self.menubar()

    def textbox(self, just):
        textb = tk.Text()
        textb.pack(fill=just, expand=True)

    def menubar(self):
        main_m = tk.Menu()
        file_m = tk.Menu(main_m, tearoff=0)  # 添加tearoff=0移除默认的可分离虚线
        # 将子菜单file_m绑定到File选项
        main_m.add_cascade(label='File', menu=file_m)
        file_m.add_command(label="New file")
        file_m.add_command(label="Open")
        file_m.add_command(label="Save as")
        self.configure(menu=main_m)

if __name__ == "__main__":
    root = GUI()
    root.textbox(tk.BOTH)
    root.mainloop()

修改说明

  1. 在__init__方法中添加self.menubar(),确保窗口初始化时就创建菜单栏
  2. 修正add_cascade的menu参数为file_m,让File选项能展开对应的子菜单
  3. 可选优化:给子菜单添加tearoff=0,移除默认的可分离菜单虚线,更符合常规使用习惯

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 04:55:29