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

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

 效果图:

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

												

TKinter之菜单的更多相关文章

  1. Tkinter Menubutton(菜单按钮)

    Python - Tkinter Menubutton: 一个菜单按钮是一个下拉菜单,在屏幕上停留时间的一部分.菜单的小工具,可以显示该菜单按钮的选择,当用户点击它与每个menubutton时.   ...

  2. Tkinter Menu(菜单)

      Tkinter Menu: 这个小工具的目标是,让我们来创建我们的应用程序,可以通过使用各种菜单.核心功能,提供的方式来创建三个菜单类型:弹出式,顶层,和下拉   这个小工具的目标是,让我们来创建 ...

  3. tkinter学习-菜单与画布

    阅读目录 Menu 菜单控件 Menubutton 菜单按钮控件 OptionMenu 选项菜单 Canvas 画布控件 Menu: 说明:菜单控件,显示菜单栏,下拉菜单和弹出菜单 属性:创建一个顶级 ...

  4. python3中 tkinter模块创建window窗体、添加按钮、事务处理、创建菜单等的使用

    开始接触桌面图形界面编程,你可以到安装路径  \lib\tkinter 打开__init__.py 文件了解tkinter 1    tkinter 模块创建窗体,代码如下截图: 运行结果,如有右图显 ...

  5. python tkinter菜单

    python3中,Tkinter编写菜单界面案例 from tkinter import * top=Tk() top.wm_title("菜单") top.geometry(&q ...

  6. python开发_tkinter_菜单的不同选项

    python的tkinter模块中,菜单也可以由你自定义你的风格 下面是我做的demo 运行效果: ====================================== 代码部分: ===== ...

  7. gui - tkinter 开发

    GUI 用户交互界面 tkinter 介绍 tkinter python自带的gui库,对图形图像处理库tk的封装 其他gui:pythonwin,wxpython,pyQT.. 概念介绍 组件:组成 ...

  8. Python入门之树莓派

    Linux命令行$+命令 pwd显示当前目录 ls列表 cd改变当前目录,/ sudo超级用户输入,特权来操作系统相关设置或删除文件 sudo apt-get  install  安装程序 sudo ...

  9. tkinter中menu菜单控件(十二)

    menu菜单控件 import tkinter wuya = tkinter.Tk() wuya.title("wuya") wuya.geometry("300x200 ...

随机推荐

  1. HDOJ-三部曲一(搜索、数学)-1010-Pots

    Pots Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 131072/65536K (Java/Other) Total Submiss ...

  2. 【LeetCode】Best Time to Buy and Sell Stock IV

    Best Time to Buy and Sell Stock IV Say you have an array for which the ith element is the price of a ...

  3. hdu1033Defragment

    参考:http://blog.csdn.net/ll365594480/article/details/6843449 [题意]磁盘分为N个簇,一个文件可以占用K个簇,(1 <= K < ...

  4. windows操作系统的快捷键

    编号:1015时间:2016年5月26日09:25:34功能:windows操作系统的快捷键URL:https://www.douban.com/group/topic/5937774/

  5. Qt之QCheckBox

    简述 QCheckBox继承自QAbstractButton,它提供了一个带文本标签的复选框. QCheckBox(复选框)和QRadioButton(单选框)都是选项按钮.这是因为它们都可以在开(选 ...

  6. sql server中NULL导入decimal字段时报错

    sql server中NULL导入decimal字段时报错 在导入CSV文件时,如果decimal字段为null值,导致文本文件入库时失败. 错误现象 构造例子 新建一张表,包含decimal字段. ...

  7. Notes of Principles of Parallel Programming: Peril-L Notation - TODO

    Content 1 syntax and semantic 2 example set 1 syntax and semantic 1.1 extending C Peril-L notation s ...

  8. Android模仿QQ空间图片上传——原理

    MainActivity.class package com.example.imagedemotext; import java.io.ByteArrayOutputStream; import j ...

  9. jquery商城购物车右侧悬浮加入购物车动画效果

    <script type="text/javascript" src="js/jquery-1.7.min.js"></script> ...

  10. hdu1269 强连通

    题意:判断给定有向图中是否所有点都能够互相到达. 就是询问是否只有一个强连通分量. #include<stdio.h> #include<string.h> #include& ...