如何在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()
修改说明
- 在
__init__方法中添加self.menubar(),确保窗口初始化时就创建菜单栏 - 修正
add_cascade的menu参数为file_m,让File选项能展开对应的子菜单 - 可选优化:给子菜单添加
tearoff=0,移除默认的可分离菜单虚线,更符合常规使用习惯
内容的提问来源于stack exchange,提问作者Yash
相关产品推荐
相关产品推荐

