MAC运行TKinter的MENU功能什么也没有
本来以为自己敲的有问题,后来直接拷贝甲鱼老师的也是什么都不出,试了试optionmenu没有问题可以显示
from tkinter import *
root = Tk()
def callback():
print("~被调用了~")
# 创建一个弹出菜单
menu = Menu(root, tearoff=False)
menu.add_command(label="撤销", command=callback)
menu.add_command(label="重做", command=callback)
frame = Frame(root, width=512, height=512)
frame.pack()
def popup(event):
menu.post(event.x_root, event.y_root)
# 绑定鼠标右键
frame.bind("<Button-3>", popup)
mainloop() 这个问题可能是因为在 macOS 上,Tkinter 的菜单栏可能不会显示在窗口的顶部,而是显示在屏幕的顶部。这可能导致你在窗口中看不到菜单栏。
要解决这个问题,你可以尝试使用useTk=True来创建Tk对象,这样可以强制菜单栏显示在窗口的顶部。修改你的代码如下:
from tkinter import *
root = Tk(useTk=True)# 使用 useTk=True 创建 Tk 对象
def callback():
print("~被调用了~")
# 创建一个弹出菜单
menu = Menu(root, tearoff=False)
menu.add_command(label="撤销", command=callback)
menu.add_command(label="重做", command=callback)
frame = Frame(root, width=512, height=512)
frame.pack()
def popup(event):
menu.post(event.x_root, event.y_root)
frame.bind("<Button-3>", popup)
mainloop()
这样修改后,你应该能够在窗口中看到菜单栏了。希望能帮到你! 在 macOS 上使用 Tkinter 创建菜单出现问题的解决方案:
问题描述:
在 macOS 上使用 Tkinter 创建菜单时,可能会发现菜单功能无法正常使用,或者菜单栏显示为空白。这是由于 macOS 默认会隐藏菜单栏,需要通过特定的参数来显示菜单栏。
解决方案:
在创建 Menu 对象时,添加一个名为 apple 的选项,指定参数 name 为 Tk,如下所示:
menu = Menu(root, tearoff=False)
root["menu"] = menu# 将菜单栏设置为新建的菜单对象
menu.add_command(label="撤销", command=callback)
menu.add_command(label="重做", command=callback)
root.option_add("*tearOff", False)# 禁止菜单栏分离
这段代码将创建一个带有两个命令的菜单,并将菜单栏设置为新建的菜单对象。注意需要将 tearoff 设置为 False,以禁止菜单栏分离,否则可能会导致菜单栏不显示。
同时,需要在创建 Tk() 对象后,添加以下代码来显示菜单栏:
root.createcommand('::tk::mac::ShowMenuBar', lambda: True)
完整的代码示例:
from tkinter import *
root = Tk()
def callback():
print("~被调用了~")
# 创建一个弹出菜单
menu = Menu(root, tearoff=False)
root["menu"] = menu# 将菜单栏设置为新建的菜单对象
menu.add_command(label="撤销", command=callback)
menu.add_command(label="重做", command=callback)
root.option_add("*tearOff", False)# 禁止菜单栏分离
# 显示菜单栏
root.createcommand('::tk::mac::ShowMenuBar', lambda: True)
frame = Frame(root, width=512, height=512)
frame.pack()
def popup(event):
menu.post(event.x_root, event.y_root)
# 绑定鼠标右键
frame.bind("<Button-3>", popup)
mainloop()
希望这个解决方案能够帮助到你!如果还有其他疑问,请随时提问。
球一个最佳答案谢谢啦!这对我非常重要!{:10_254:}{:10_254:}{:10_254:} isdkz 发表于 2023-11-2 15:00
这个问题可能是因为在 macOS 上,Tkinter 的菜单栏可能不会显示在窗口的顶部,而是显示在屏幕的顶部。这可 ...
依旧没有显示 Mike_python小 发表于 2023-11-2 15:01
在 macOS 上使用 Tkinter 创建菜单出现问题的解决方案:
问题描述:
试了试这个还是啥也不显示
是不是MAC的问题,创建分级下拉菜单可以,单独一个menu不行,这种鼠标右键弹出也不行 from tkinter import *
root = Tk()
def callback():
print("~被调用了~")
# 创建一个弹出菜单
menu = Menu(root, tearoff=False)
menu.add_command(label="撤销", command=callback)
menu.add_command(label="重做", command=callback)
frame = Frame(root, width=512, height=512)
frame.pack()
def popup(event):
menu.post(event.x_root, event.y_root)
# 绑定鼠标右键
frame.bind("<Button-3>", popup)
root.config(menu=menu)
mainloop()
页:
[1]