TKinter之菜单

菜单的分类也较多,通常可以分为下拉菜单、弹出菜单。

1、使用Menu类创建一个菜单

2、add_command添加菜单项,如果该菜单是顶层菜单,则添加的菜单项依次向右添加。 如果该菜单时顶层菜单的一个菜单项,则它添加的是下拉 菜单的菜单项。

  属性:  

    label:指定菜单的名称

    command:被点击时调用的方法

    acceletor:快捷键

    underline:是否拥有下划线

3、窗口的menu属性:指定顶级菜单项

 

应用场景一:一个最简单的示例,创建一个顶级菜单窗口。

#!/usr/bin/env python
# _*_ coding:utf-8 _*_
from Tkinter import *
#定义一个顶级大窗口
root = Tk()
#在大窗口下定义一个菜单实例
menubar = Menu(root)
#给菜单实例增加菜单项
for each in ['文件','视图','编辑','关于']:
    menubar.add_command(label=each)
#菜单实例应用到大窗口中
root['menu']=menubar
root.mainloop()

  效果图:

 

 

应用场景二、为顶级菜单级联子菜单项

 

#!/usr/bin/env python
# _*_ coding:utf-8 _*_
from Tkinter import *
#定义一个顶级大窗口
root = Tk()
#在大窗口下定义一个顶级菜单实例
menubar = Menu(root)

#在顶级菜单实例下创建子菜单实例
fmenu = Menu(menubar)
for each in ['新建','打开','保存','另存为']:
    fmenu.add_command(label=each)

vmenu = Menu(menubar)
#为每个子菜单实例添加菜单项
for each in ['复制','粘贴','剪切']:
    vmenu.add_command(label=each)

emenu = Menu(menubar)
for each in ['默认视图','新式视图']:
    emenu.add_command(label=each)

amenu = Menu(menubar)
for each in ['版权信息','联系我们']:
    amenu.add_command(label=each)

#为顶级菜单实例添加菜单,并级联相应的子菜单实例
menubar.add_cascade(label='文件',menu=fmenu)
menubar.add_cascade(label='视图',menu=vmenu)
menubar.add_cascade(label='编辑',menu=emenu)
menubar.add_cascade(label='关于',menu=amenu)

#顶级菜单实例应用到大窗口中
root['menu']=menubar
root.mainloop()

  效果图:

 

 应用场景三、右键菜单

 1.Menu 类里面有一个 post 方法,它接收两个参数,即 x 和 y 坐标,它会在相应的位置弹出菜单。

 2.利用 Menu 的 post 方法,还有 bind 方法

#!/usr/bin/env python
# _*_ coding:utf-8 _*_
from Tkinter import *
#在大窗口生成一个标签并布局上去
def kong():
    Label(root,text='I love Python').pack()

#生成一个大窗口实例
root = Tk()
#生成一个顶级菜单实例
menubar = Menu(root)
#生成顶级菜单实例的菜单项
for x in ['vb','vc','java','python','php']:
    menubar.add_command(label=x)
#增加顶级菜单项的同时,绑定一个事件(在root上创建一个标签并布局上去)
menubar.add_command(label='django',command=kong)
#定义一个事件
def pop(event):
    menubar.post(event.x_root,event.y_root)
#在root大窗口绑定一个右键事件(在当前坐标上post出一个菜单)
root.bind("<Button-3>",pop)
root.mainloop()

  效果图:

右键时会弹出一个菜单,选择django后,会在root窗口布局一个标签。

 

应用场景四:分割线

add_separator():无参数

用于对菜单项中的菜单分类

#!/usr/bin/env python
# _*_ coding:utf-8 _*_
from Tkinter import *
#定义一个root大窗口实例
root = Tk()
#在root大窗口定义一个顶级菜单 
menuroot = Menu(root)
#在顶级菜单下定义一个子菜单
menusp = Menu(menuroot)
#给子菜单添加菜单项
for x in ['linux','unix','opoos']:
    menusp.add_command(label=x)
#给子菜单添加分割线
menusp.add_separator()
#继续给子菜单添加菜单项
for x in ['python','c++','vb','php']:
    menusp.add_command(label=x)
#子菜单绑定到顶级菜单 
menuroot.add_cascade(label='lang',menu=menusp)
#root大窗口应用此顶级菜单
root['menu']=menuroot
root.mainloop()

  

效果图:

 

应用场景五:单选框(add_radiobutton)与复选框(add_checkbutton)

代码与上面的分割线类似,只是将add_command改为了add_radiobutton

#!/usr/bin/env python
# _*_ coding:utf-8 _*_
from Tkinter import *
#定义一个root大窗口实例
root = Tk()
#在root大窗口定义一个顶级菜单
menuroot = Menu(root)
#在顶级菜单下定义一个子菜单
menusp = Menu(menuroot)
#给子菜单添加菜单项
for x in ['linux','unix','opoos']:
    menusp.add_radiobutton(label=x)
#给子菜单添加分割线
menusp.add_separator()
#继续给子菜单添加菜单项
for x in ['python','c++','vb','php']:
    menusp.add_checkbutton(label=x)
#子菜单绑定到顶级菜单
menuroot.add_cascade(label='lang',menu=menusp)
#root大窗口应用此顶级菜单
root['menu']=menuroot
root.mainloop()

 效果图:

上面是单选效果,下面是多选效果





 

转载于:https://www.cnblogs.com/kongzhagen/p/6148737.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值