python-3.x Mac中Tkinter的菜单栏无法正常工作

3gtaxfhh  于 2023-02-26  发布在  Python
关注(0)|答案(2)|浏览(266)

我正在尝试学习tkinter,并且正在研究菜单栏。我正在创建一个简单的GUI窗口,并尝试显示菜单栏。但是它并没有显示在那里。在许多地方,他们说菜单栏将显示在mac one中,而不是显示在窗口本身,但是我的菜单栏也没有显示在那里。下面是我正在使用的代码

from tkinter import *

root = Tk()
root.geometry("1000x700")
root.minsize(1000, 700)
root.maxsize(1000, 700)
mainmenu = Menu(root)
mainmenu.add_command(label="hello", command=quit)
mainmenu.add_command(label="exit", command=lambda:print("hello"))
root.config(menu=mainmenu)
root.mainloop()

我尝试用下面的代码创建一个带有菜单栏的窗口:

from tkinter import *

root = Tk()
root.geometry("1000x700")
root.minsize(1000, 700)
root.maxsize(1000, 700)
mainmenu = Menu(root)
mainmenu.add_command(label="hello", command=quit)
mainmenu.add_command(label="exit", command=lambda:print("hello"))
root.config(menu=mainmenu)
root.mainloop()

相反,它导致了一个空白窗口,没有菜单栏,甚至在mac的一个。

vu8f3i0k

vu8f3i0k1#

OSX不允许你直接把命令放在主菜单上,在主菜单上你只能添加级联,官方文档中巧妙地提到了这一点:
在Macintosh上,只要顶层在前,此菜单的级联项就会出现在主监视器顶部的菜单栏中。在Windows和Unix上,此菜单的项就会出现在窗口顶部的菜单栏中。
请注意,它只提到了Mac的级联项,但其他平台的所有项都是级联项。

mainmenu = Menu(root)
root.config(menu=mainmenu)

filemenu = Menu(mainmenu)
mainmenu.add_cascade(label="File", menu=filemenu)

filemenu.add_command(label="hello", command=quit)
filemenu.add_command(label="exit", command=lambda:print("hello"))
hwamh0ep

hwamh0ep2#

替换为:

root.config(menu=mainmenu)

致:

root['menu'] = mainmenu

相关问题