如何使 Menu.add_command() 在 Mac 上的 tkinter 中工作?
How to make Menu.add_command() work in tkinter on the Mac?
如果我在 OS X 上创建一个 tkinter 菜单并尝试使用 add_comand()
添加一个菜单按钮到它,菜单中什么也没有显示。
如果下面的代码是 运行 在 Ubuntu 上,我会得到一个菜单栏,其中包含两个标记为 "Red" 和 "Blue" 的命令,它们更改了 window。
在 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()
你能告诉我怎么做吗?
我认为您无法使用 OS X 上的原生 ("Aqua") Tk 做到这一点,您可能不应该尝试。 OS X 本机菜单不是那样工作的,Tk 试图遵循 Apple 的 Human Interface Guide for menus。您需要一个带有下拉菜单 cascades 的菜单栏。
TkDocs
网站对 Tk menus and their platform differences. 有很好的介绍(您 可以 在 OS X 上使用基于 X11 的 Tk,但是不推荐这样做,因为 Apple 不再提供带有 OS X 的 X11 服务器,并且您的应用程序对于 OS X 用户来说看起来和行为会很奇怪。)
如果我在 OS X 上创建一个 tkinter 菜单并尝试使用 add_comand()
添加一个菜单按钮到它,菜单中什么也没有显示。
如果下面的代码是 运行 在 Ubuntu 上,我会得到一个菜单栏,其中包含两个标记为 "Red" 和 "Blue" 的命令,它们更改了 window。
在 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()
你能告诉我怎么做吗?
我认为您无法使用 OS X 上的原生 ("Aqua") Tk 做到这一点,您可能不应该尝试。 OS X 本机菜单不是那样工作的,Tk 试图遵循 Apple 的 Human Interface Guide for menus。您需要一个带有下拉菜单 cascades 的菜单栏。
TkDocs
网站对 Tk menus and their platform differences. 有很好的介绍(您 可以 在 OS X 上使用基于 X11 的 Tk,但是不推荐这样做,因为 Apple 不再提供带有 OS X 的 X11 服务器,并且您的应用程序对于 OS X 用户来说看起来和行为会很奇怪。)