Tkinter编程应知应会(21)-选项菜单和菜单按钮

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/craftsman1970/article/details/101034395

除了标准菜单以外,有些情况可能还会需要菜单的变体。在Tkinter中就提供了两种常用的类菜单控件:选项菜单(OptionMenu)和菜单按钮(Menubutton)。先看动作演示视频,本文主要说明Text有效控制的OptionMenu和格式控制菜单按钮Format的实现方法。

视频链接

OptionMenu的动作有两个特点:一是可以显示一个下拉列表供用户选择,二是可以将选择结果表示在控件上。关联代码如下:

text_enable = StringVar()text_enable.set('Enable ')
enable_menu = OptionMenu(root, text_enable, 'Enable ', 'Disable')enable_menu.grid(row = 0, column = 0, sticky=E+W)

代码中首先构建了一个StringVar类型的变量text_enable,用于保存选择结果。接下来构建一个OptionMenu控件,并指定其控制的变量为text_enable和每个选项的内容。当用户选择某个选项时,这个选项的内容就会被设定到text_enable变量上。

接来来为text_enable设定监视函数以控制Text控件的有效状态:

 
def var_changed(*args):    if text_enable.get() == 'Enable ':        text.config(state='normal')        text.config(background='#a0ffa0')    else:        text.config(state='disabled')        text.config(background='#efefef')# set variable observer.text_enable.trace_variable('w', var_changed)

菜单按钮首先是一个按钮,它的构建过程和按钮没有什么区别:

menu_button = Menubutton(root, text='Format', relief=RAISED)menu_button.grid(row=0, column=4, sticky=E+W)

接下来构建普通的菜单控件并指定菜单项:

format_menu = Menu(menu_button, tearoff=0)menu_button.config(menu=format_menu)
for i in range(0, 4):    format_menu.add_command(label="Format" + str(i),                             command=lambda v=i : format(v))

菜单按钮更像一个按钮,用户操作时虽然也可以表示下拉菜单,但通常情况下不会表示选择结果。

完整代码可以从以下地址下载:

https://github.com/xueweiguo/TkinterPrimer/blob/master/Sample/21%20OptionMenuAndMenubutton.py

觉得本文有帮助?请分享给更多人。

阅读更多更新文章,请扫描下面二维码,关注微信公众号【面向对象思考】

猜你喜欢

转载自blog.csdn.net/craftsman1970/article/details/101034395
今日推荐