【问题标题】:tkinter top-level menues not showing with macOStkinter 顶级菜单未随 macOS 显示
【发布时间】:2019-11-07 09:49:52
【问题描述】:

这是来自effbot的经典代码,其中告知:

顶级菜单显示在根或任何其他顶级窗口的标题栏下方(或在 Macintosh 上,沿着屏幕的上边缘)。要创建顶级菜单,请创建一个新的 Menu 实例,并使用 add 方法向其中添加命令和其他菜单条目。

但不工作,没有找到菜单。我预计python 的右侧有Welcome 和Quit。有什么遗漏的吗?

系统信息

  • Python 3.7.5
  • macOS 卡塔利娜
  • TkV 版本 8.6
import tkinter as tk

def hello():
    print('Hi~')

root = tk.Tk()
root.title("MacOS Catalina")
menubar  = tk.Menu(root)
root.configure(menu=menubar)
menubar.add_command(label='Welcome', command=hello)
menubar.add_command(label='Quit', command=root.quit)
root.mainloop()

【问题讨论】:

  • 我知道这是一个不同的话题,但你是如何让 MacOS 暗模式与你的 Tkinter 应用程序一起工作的?因为我的总是处于光照模式。
  • @Tom 我不知道。暗模式外观是在Pyenv 创建的 python 3.7.5 虚拟环境中运行,而在 conda 的 python 3.7.3 虚拟环境中,是轻的。希望这会对你有所帮助。

标签: python-3.x macos tkinter menu


【解决方案1】:

在 OSX 上,您不能将命令放在根菜单上。苹果根本不允许。您只能放置其他菜单(级联)。例如:

...
menubar  = tk.Menu(root)
root.configure(menu=menubar)

menu = tk.Menu(menubar)
menu.add_command(label="Welcome", command=hello)
menu.add_command(label="Quit", command=root.quit)
menubar.add_cascade(label="My Menu", menu=menu)

【讨论】:

  • 我知道我们可以这样做。但我不明白为什么我的方式不行?您会进一步解释或提供一些参考链接吗?
  • @Kuo:你不能,因为这违反了 Apple 的人机界面指南。它们不允许顶部菜单栏上的命令。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多