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

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. PHP_Session

    Session有12个函数分别是: 01 session_start:  初始 session 02 session_destroy: 结束 session 03 session_unset: 释放s ...

  2. iOS事件:触摸事件.运动事件.远程控制事件

    iOS中,提供了事件处理:触摸事件,运动事件,远程控制事件.这很大得方便程序猿的工作. 这里先简单做个介绍: // // ViewController.m // demo // // Created ...

  3. 10、网页制作Dreamweaver(扩展:各浏览器对 onunload 事件的支持与触发条件实现有差异)

    标准参考 在 HTML 4.01 规范中关于 onunload 事件的描述是:当 document 从 window 中移除时,触发 onunload 事件. 关于 HTML 4.01 规范中 onu ...

  4. HDU 4848

    http://acm.hdu.edu.cn/showproblem.php?pid=4848 题意:求遍历所有点的最小值(这个答案是加i点到起始点的距离,不是当前点到i的距离),必须在ti[i]前到达 ...

  5. LeetCode Kth Smallest Element in a BST(数据结构)

    题意: 寻找一棵BST中的第k小的数. 思路: 递归比较方便. /** * Definition for a binary tree node. * struct TreeNode { * int v ...

  6. C/C++访问PostgreSQL数据库

    编号:1011时间:2016年5月17日09:46:01功能:Windows环境下C/C++访问PostgreSQL数据库https://segmentfault.com/a/119000000062 ...

  7. HTTP一次请求的过程

    一次完整的HTTP请求所经历的7个步骤 HTTP通信机制是在一次完整的HTTP通信过程中,Web浏览器与Web服务器之间将完成下列7个步骤: 1. 建立TCP连接在HTTP工作开始之前,Web浏览器首 ...

  8. linux定时

    linux怎样启动定时任务 crontab -e进入以后的,定时任务写入 */1 * * * * /usr/bin/python /root/lianxi/time_1.py ,每一分钟定时执行tim ...

  9. FreeBSD基金会添加新成员,梁莉成为第一位来自微软和中国的基金会董事

    这个月23日FreeBSD基金会很高兴地宣布Philip Paeps和Kylie Liang (梁莉)正式加入董事会. 梁莉,现任微软开源技术部高级项目经理,主要负责FreeBSD在公有云以及私有云的 ...

  10. hadoop问题锦集(一)-搭建集群环境时的常见问题

    1.没有主机的路由 1.namenode与datanode之间ping不通了 2.防火墙得关闭: ufw status ufw disabled 2. ssh localhost ssh:connec ...