Python GUI开发之Tkinter基础篇6:Menu组件

在这里插入图片描述

一、前言

几乎每个应用程序都可以看到菜单,菜单有一级菜单和二级菜单等等。
Tkinter提供了一个Menu组件,用于实现顶级菜单、下拉菜单和弹出菜单。由于该组件是底层代码实现和优化,所以不建议自行通过按钮和其他组件来实现菜单功能。
创建一个顶级菜单,需要先创建一个菜单实例,然后使用add()方法将命令和其他子菜单添加进去。
创建一个下拉菜单(或者其他子菜单),方法同创建顶级菜单大同小异,最主要区别是下拉菜单最后需要添加到主菜单上(而不是窗口上)。

二、Menu使用实例:创建顶级菜单

代码实现

from tkinter import *
root= Tk()
def callback():
    print("helloworld")

menubar = Menu(root)  #创建一个顶级菜单
menubar.add_command(label = "你好",command = callback)
menubar.add_command(label = "退出",command = root.quit)

#显示菜单
root.config(menu = menubar)

mainloop()

运行见图5-1

这里我们可以看到,只是实现了一级菜单,如果要在一级菜单下实现多级菜单呢?方法如下:

三、多级菜单创建实例

代码实现:

#我们创建一个多级菜单
from tkinter import *
root = Tk()
def callback1():
    print("打开")

def callback2():
    print("关闭")

def callback3():
    print("退出")

def callback4():
    print("剪贴")

def callback5():
    print("拷贝")

def callback6():
    print("粘贴")

menubar = Menu(root)  #创建一个顶级菜单
filemenu = Menu(menubar,tearoff = False) #创建一个顶级菜单下的子菜单
menubar.add_cascade(label = "文件",menu = filemenu)  #为子菜单起个名字
filemenu.add_command(label = "打开",command = callback1)
filemenu.add_command(label = "关闭",command = callback2)
filemenu.add_separator()  #增加分隔符
filemenu.add_command(label = "退出",command = callback3)

editmenu = Menu(menubar,tearoff = False)
menubar.add_cascade(label = "编辑",menu = editmenu)
editmenu.add_command(label = "剪贴",command = callback4)
editmenu.add_command(label = "拷贝",command = callback5)
editmenu.add_command(label = "粘贴",command = callback6)

#显示菜单
root.config(menu = menubar)
mainloop()

运行见图5-2

四、为菜单添加单选或多选按钮

下面我们结合之前学习的Checkbutton和Radiobutton组件来为菜单添加单选或多选标签,同时获取标签值,写进变量。(只需将二中的add_command替换为add_checkbutton或add_checkbutton即可)

代码实现:

from tkinter import *
root = Tk()
def callback1():
    print("打开")
    print(openVar.get())

def callback2():
    print("关闭")
    print(closeVar.get())

def callback3():
    print("退出")
    print(exitVar.get())

def callback4():
    print("剪贴")
    print(editVar.get())

def callback5():
    print("拷贝")
    print(editVar.get())

def callback6():
    print("粘贴")
    print(editVar.get())

#创建checkbutton关联变量
openVar = IntVar()
closeVar = IntVar()
exitVar = IntVar()

menubar = Menu(root)  #创建一个顶级菜单
filemenu = Menu(menubar,tearoff = False) #创建一个顶级菜单下的子菜单
menubar.add_cascade(label = "文件",menu = filemenu)  #为子菜单起个名字
filemenu.add_checkbutton(label = "打开",command = callback1,variable = openVar)
filemenu.add_checkbutton(label = "关闭",command = callback2,variable = closeVar)
filemenu.add_separator()  #增加分隔符
filemenu.add_checkbutton(label = "退出",command = callback3,variable = exitVar)

#创建radiobutton关联变量
editVar = IntVar()
editVar.set(1)
editmenu = Menu(menubar,tearoff = False)
menubar.add_cascade(label = "编辑",menu = editmenu)
editmenu.add_radiobutton(label = "剪贴",command = callback4,variable = editVar,value = 1)
editmenu.add_radiobutton(label = "拷贝",command = callback5,variable = editVar,value = 2)
editmenu.add_radiobutton(label = "粘贴",command = callback6,variable = editVar,value = 3)

#显示菜单
root.config(menu = menubar)
mainloop()

运行图见5-3和5-4

五、运行

在这里插入图片描述
图5-1
在这里插入图片描述
图5-2
在这里插入图片描述
图5-3(多选标签)
在这里插入图片描述
图5-4(单选标签)

六、结语

如您在使用过程中有任何问题,请加QQ群进一步交流。

QQ交流群:906015840 (备注:物联网项目交流)。

获取资料:微信扫描下方二维码,关注公众号:一个物联网项目的前世今生,回复tkinter即可。

静晨出品:静之所想,晨之所计
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值