我正在尝试创建一个带菜单的menubutton,我无法在tkinter的文档中找到任何内容,我是否想念它,或者它不可能?这是我想要做的一个例子:
答案 0 :(得分:3)
您可以创建菜单并将其他菜单嵌套在另一个菜单中。以下是相关documentation
的链接您问题中的嵌套菜单的一个小例子。
from tkinter import *
root = Tk()
menubar = Menu(root)
helpmenu = Menu(menubar)
nested_menu1 = Menu(helpmenu)
nested_menu1.add_command(label='Stuff 1')
nested_menu1.add_command(label='Stuff 2')
nested_menu2 = Menu(helpmenu)
nested_menu2.add_command(label='Stuff 3')
nested_menu2.add_command(label='Stuff 4')
menu2_nested = Menu(nested_menu2)
menu2_nested.add_command(label='Stuff 5')
nested_menu2.add_cascade(label='Nestception', menu=menu2_nested)
helpmenu.add_cascade(label='1.0 Nested', menu=nested_menu1)
helpmenu.add_cascade(label='2.0 Nested', menu=nested_menu2)
menubar.add_cascade(label="Nested Menus", menu=helpmenu)
root.config(menu=menubar)
root.mainloop()
然后,您可以通过重复帮助菜单的过程将更多面板添加到水平菜单中,然后您可以选择一个菜单选项,其中包含更多下拉菜单或一整行,当然您可以根据需要进行嵌套。
您甚至可以将这些菜单放在menubutton
内,或者您可以嵌套更多的menubutton,并将它们放在您的布局中的任何位置:
from tkinter import *
top = Tk()
for i in range(10):
for j in range(10):
mb= Menubutton(top, text="Menu 1")
mb.menu = Menu(mb)
mb["menu"] = mb.menu
helpmenu = Menu(mb.menu)
nested_menu1 = Menu(helpmenu)
nested_menu1.add_command(label='Stuff 1')
nested_menu1.add_command(label='Stuff 2')
nested_menu2 = Menu(helpmenu)
nested_menu2.add_command(label='Stuff 3')
nested_menu2.add_command(label='Stuff 4')
menu2_nested = Menu(nested_menu2)
menu2_nested.add_command(label='Stuff 5')
nested_menu2.add_cascade(label='Nestception', menu=menu2_nested)
helpmenu.add_cascade(label='1.0 Nested', menu=nested_menu1)
helpmenu.add_cascade(label='2.0 Nested', menu=nested_menu2)
mb.menu.add_cascade(label="Nested Menus", menu=helpmenu)
mb.grid(row=i, column=j)
top.mainloop()