如何使Menu.add_command()在Mac上的tkinter中工作?

sau*_*atz 6 python macos menu tkinter menubar

如果我在OS X上创建一个tkinter菜单并尝试向其添加菜单按钮,则菜单中add_comand()不会显示任何内容.

如果下面的代码在Ubuntu上运行,我会得到一个带有两个标记为"红色"和"蓝色"的命令的菜单栏,它们会改变窗口的背景颜色.

在OS X 10.10.1(Yosemite)上,按钮不会出现.我知道我可以使用红色和蓝色命令制作一个下拉菜单,但在我的真实应用程序中,我宁愿不这样做.

from platform import python_version_tuple

major = python_version_tuple()[0]

if major == '3':
    import tkinter as tk
else:
    import Tkinter as tk

root = tk.Tk()

fr = tk.Frame(root, height = 200, width = 200)
fr.pack()
menu = tk.Menu(root)
root.configure(menu=menu)
menu.add_command(label='Red', command=lambda:fr.configure(bg='red'))
menu.add_command(label='Blue', command=lambda:fr.configure(bg='blue'))

root.mainloop()
Run Code Online (Sandbox Code Playgroud)

你能告诉我怎么做我想要的吗?

Ned*_*ily 5

我认为你不能用OS X上的原生("Aqua")Tk做到这一点,你可能不应该尝试.OS X本机菜单不起作用,Tk尝试按照Apple的人机界面指南进行菜单操作.您需要一个带下拉级联的菜单栏.

TkDocs网站对Tk菜单及其平台差异有很好的介绍. (您可以在OS X上使用基于X11的Tk,但不建议这样做,因为Apple不再使用OS X发布X11服务器,并且您的应用程序对OS X用户来说看起来很奇怪.)