在menubutton中添加菜单?蟒蛇

时间:2016-04-05 01:27:25

标签: python-3.x menu tkinter

我正在尝试创建一个带菜单的menubutton,我无法在tkinter的文档中找到任何内容,我是否想念它,或者它不可能?这是我想要做的一个例子:

1 个答案:

答案 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()