Tkinter菜单自发添加额外项目

2 投票
1 回答
33 浏览
提问于 2025-04-12 02:08

我正在写一个Tkinter程序,目前已经创建了一个窗口,里面有一个菜单栏,一个文件菜单,以及一个菜单项。菜单成功创建了,但却多了一个我没有指定的项,名字是“-----”。

即使我不添加任何项,这个自动生成的项还是会出现。如果我设置了tearoff=0,这个情况依然存在。

有人知道这是为什么吗?

我的系统是Windows 11,使用的是Python 3.12.2,Tkinter和Tcl 8.6。

import tkinter as tk

window = tk.Tk()
window.geometry("800x600")

menubar = tk.Menu(window)
window.config(menu=menubar)

fileMenu = tk.Menu(menubar)
fileMenu.add_command(
    label="Exit",
    command=window.destroy,
)
menubar.add_cascade(label="File", menu=fileMenu, underline=0)

window.mainloop()

1 个回答

3

这样做是可以的。我觉得你把 tearoff=0 放在了 menubar 里,而不是放在 fileMenu 里。如果你把 tearoff=0 放在 menubar 里,它就不会影响到 fileMenu。所以,你需要特别把 tearoff=0 放在特定的 tk.Menu() 里。

import tkinter as tk

window = tk.Tk()
window.geometry("800x600")

menubar = tk.Menu(window)
window.config(menu=menubar)

fileMenu = tk.Menu(menubar,tearoff=0)
fileMenu.add_command(
    label="Exit",
    command=window.destroy,
)
menubar.add_cascade(label="File", menu=fileMenu, underline=0)

window.mainloop()

撰写回答