tkinter中控件menu的两种组织方法

tkinter中,菜单控件组织方法有两种,使用中常出现混淆,为明晰各个正确用法,特整理撰写此博文。菜单控件的组织实际上是通过一个“母菜单”和“子菜单”构成,“母菜单”一方面与master连接(即与依附控件的关联),一方面与”子菜单“连接,而子菜单则负责展示及响应。

”母菜单“可以采用Menu类或者Menubutton类,由此产生出两种组织方法:

(1)Menu类:

与Root或者Toplevel的关联为:menu=Menu(Root);Frame.config(menu=menu)

与”子菜单“的关联为:pulldown=Menu(menu);menu.add_cascade(menu=pulldown,label='text')

(2)Menubutton类:

与Root或者Toplevel的关联为:menubutton=Menubutton(Root,text='text');menubutton.pack();

与”子菜单“的关联为:pulldown=Menu(menubutton);menubutton.config(menu=pulldown)

而当”子菜单“扩展时,可以继续使用add_cascade方法,从这个角度看,”母菜单“使用Menu类的组织方法可以看作是Menu控件的扩展方法。

下面是两个简单的Demo:

>>> from tkinter import *
>>> root=Toplevel()
>>> menu=Menu(root)
>>> root.config(menu=menu)
>>> pulldow=Menu(menu)
>>> pulldow.add_command(label='test1')
>>> pulldow.add_command(label='test2')
>>> pulldow.add_separator()
>>> menu.add_cascade(menu=pulldow,label='menu')
>>> from tkinter import *
>>> root=Tk()
>>> menubtn=Menubutton(root,text='menubtn')
>>> menubtn.pack()
>>> pulldown=Menu(menubtn)
>>> pulldown.add_command(label='test1',command=None)
>>> pulldown.add_command(label='test2',command=None)
>>> menubtn.config(menu=pulldown)

  

  

总结:两种方式中,第一个Menu的安置需要依附控件(root,toplevel)的config方法;”母菜单“为Menu类时,实质是Menu的扩展;”母菜单“为Menubutton时,它本身具有Button的属性,所以参数需要master,text,command,联结”子菜单“时(肯定是第一个Menu类),所以需要config方法。

猜你喜欢

转载自www.cnblogs.com/johnyang/p/11020610.html
今日推荐