我使用Menubutton
和Menu
小部件在菜单中创建了一个子菜单:
from tkinter import *
root = Tk()
def f(event):
submenu.invoke(0)
mainmenu = Menubutton(root, text="Menu")
mainmenu.pack()
submenu = Menu(mainmenu)
mainmenu.config(menu=submenu)
submenu.add_command(label="Option 1")
submenu.add_command(label="Option 2")
现在我想在我的菜单中添加一个键绑定:
mainmenu.bind("<Key>", f)
mainmenu.focus_set()
它有魅力:当我按下一个键时,它会打开子菜单。但问题是,子菜单是作为一个撕裂的顶层窗口打开的。但是我想用菜单在同一个窗口打开它。我将tearoff=0
添加到submenu
中(因此它变成了这样:submenu = Menu(mainmenu, tearoff=0)
)。但现在,它不会返回任何东西。我试图弄清楚它为什么没有。也许我做错了什么......我找了一个解决方案,但没有一个能解决问题。他们所说的只是添加了一个打印出来的键绑定,但是我想要一个自动点击菜单项的键绑定,它会弹出项目元素,但不会作为一个单独的窗口(也许它是&#39; s叫contextmenu
?)。我无法在任何地方找到解决这个特定问题的方法
那我怎么能实现呢?任何帮助将不胜感激。
答案 0 :(得分:2)
我认为
def f(event):
submenu.post(mainmenu.winfo_rootx(),
mainmenu.winfo_rooty() + mainmenu.winfo_height())
即使使用tearoff=False
选项,也能做到你想要的。