非级联类型的菜单栏项目在 Mac OSX 的 Tkinter 上不起作用

Posted

技术标签:

【中文标题】非级联类型的菜单栏项目在 Mac OSX 的 Tkinter 上不起作用【英文标题】:Non-cascade type menubar items not working on Tkinter with Mac OSX 【发布时间】:2016-02-03 16:34:37 【问题描述】:

我遇到了我认为可能是一个错误,每当我尝试在 mac 上的 tkinter 中创建菜单栏 (Menu) 时,任何非级联类型的菜单项 - 即 menu.add_command 而不是menu.add_cascade -- 似乎不起作用。

import tkinter as tk

def callback():
    print("Hello World")

root = tk.Tk()

menu = tk.Menu(root)

# Adding cascade
menu2 = tk.Menu(menu, tearoff=0)
menu2.add_command(label="CascadeItem", command=callback)
menu.add_cascade(menu=menu2, label="Cascade")

# Adding non-cascade
menu.add_command(label="NonCascade", command=callback)

root.config(menu=menu)

root.mainloop()

当我运行上述代码时,我可以看到“Cascade”菜单项,但看不到“NonCascade”菜单项。

我在这里做错了吗?这是某种类型的错误吗?还是mac不支持菜单栏上的非级联类型的菜单项?

【问题讨论】:

【参考方案1】:

你是对的:你不能在 OSX 的菜单栏中添加命令。没有解决方法。从可用性的角度来看,这是一个坏主意,因此 OSX 禁止这样做。

【讨论】:

我认为是这种情况。你不能这样做是有道理的,但我知道你可以在 Windows 中,所以我想我会检查一下。谢谢。

以上是关于非级联类型的菜单栏项目在 Mac OSX 的 Tkinter 上不起作用的主要内容,如果未能解决你的问题,请参考以下文章

PyQt MenuBar Mac OSX 雪豹

Python/Tkinter:级联菜单锚定在右侧而不是左侧

如何在锁定屏幕上保持 osx 上的菜单栏应用程序“活动”?

以编程方式修改osx中的屏幕边界

Mac Os X 中类似 Windows 的 Qt4 菜单栏

Parallels Desktop如何全屏后鼠标移到最上不显示MAC菜单栏