只有主菜单没有二级菜单的例子:

from tkinter import *
root=Tk()
root.wm_title('同济大学财务管理系统')
menubar=Menu(root)#指定菜单实例的父窗口是root
for item in ['文件','编辑','视图','关于']:
menubar.add_command(label=item)
root['menu']=menubar#指定主窗口的'menu'属性为刚刚创建的menubar
root.mainloop()

主菜单携带子菜单的例子:

from tkinter import *
root=Tk()
menubar=Menu(root)# it produces a menu instance
fmenu=Menu(menubar)
for item in ['新建','打开','保存','另存为']:
fmenu.add_cascade(label=item)
emenu=Menu(menubar)
for item in ['复制','粘贴','剪切']:
emenu.add_cascade(label=item)
vmenu=Menu(menubar)
for item in ['默认视图','新式视图']:
vmenu.add_cascade(label=item)
amenu=Menu(menubar)
for item in ['版权信息','其他说明']:
amenu.add_cascade(label=item)
menubar.add_cascade(label='文件',menu=fmenu)
menubar.add_cascade(label='编辑',menu=emenu)
menubar.add_cascade(label='视图',menu=vmenu)
menubar.add_cascade(label='关于',menu=amenu)
root['menu']=menubar
root.mainloop()

制作弹出式菜单的例子:

from tkinter import *
def xianshi():
#global root
x1=Label(root,text='I love China',background='blue')
x1.pack()
root=Tk()#制作一个盛所有窗口的容器
menubar=Menu(root)#制作一个菜单实例
for x in ['vb','c','java','php','c++']:
menubar.add_command(label=x)
menubar.add_command(label='python',command=xianshi)
def pop(event):
menubar.post(event.x_root,event.y_root)
root.bind('<Button-3>',pop)
root.mainloop()

带分割横线的二级菜单:

from tkinter import *
root=Tk()
m=Menu(root)#创建一个菜单实例m,这个菜单实例依附在主窗口root上面。
m2=Menu(m)#创建一个二级菜单实例,这个实例依附在菜单m上,因为Menu的参数是widget,它是一个窗
#口,m也算是一个窗口了,只不过是菜单窗口。
for item in ['python','perl','php','ruby']:
m2.add_command(label=item)#菜单m2调用add_command方法,用来增加菜单项目标签
m2.add_separator()#添加分割线,不需要任何参数
for item in ['java','c++','c']:
m2.add_command(label=item)#增加二级菜单项目标签
m.add_cascade(label='语言',menu=m2)#给依附在root容器上的一级菜单m增加一个二级菜单
root['menu']=m#给root增加菜单属性,让其拥有一级菜单
root.mainloop()

增加复选按钮与单选按钮:

from tkinter import *
root=Tk()
m=Menu(root)#创建一个菜单实例m,这个菜单实例依附在主窗口root上面。
m2=Menu(m)#创建一个二级菜单实例,这个实例依附在菜单m上,因为Menu的参数是widget,它是一个窗
#口,m也算是一个窗口了,只不过是菜单窗口。
for item in ['python','perl','php','ruby']:
m2.add_checkbutton(label=item)#菜单m2调用add_command方法,用来增加菜单项目标签,复选按钮
m2.add_separator()#添加分割线,不需要任何参数
for item in ['java','c++','c']:
m2.add_radiobutton(label=item)#增加二级菜单项目标签,单选按钮
m.add_cascade(label='语言',menu=m2)#给依附在root容器上的一级菜单m增加一个二级菜单
root['menu']=m#给root增加菜单属性,让其拥有一级菜单
root.mainloop()

python之menu的更多相关文章

  1. python Console menu

    I just finished a demo which is to provide an easy way to control hardware resources of A sample. Th ...

  2. Python Tkinter Menu

    本人想开发一个简易的搜图GUI,基于此,选择用Tkinter模块开发. 需要开发出菜单栏 1 from Tkinter import * 2 3 4 root = Tk() 5 root.title( ...

  3. python手记(9)

    本博客所有内容是原创,未经书面许可,严禁任何形式的转 http://blog.csdn.net/u010255642 tab #!/usr/bin/env python # example noteb ...

  4. python开发_tkinter_菜单选项中英文切换_菜单选项不可用操作_博主推荐

    我使用的python版本为:3.3.2 如果你对python中tkinter模块的菜单操作不是很了解,你可以看看: python开发_tkinter_窗口控件_自己制作的Python IDEL_博主推 ...

  5. python开发_tkinter_窗口控件_自己制作的Python IDEL_博主推荐(二)

    在上一篇blog:python开发_tkinter_窗口控件_自己制作的Python IDEL_博主推荐 中介绍了python中的tkinter的一些东西,你可能对tkinter有一定的了解了.这篇b ...

  6. python开发_tkinter_窗口控件_自己制作的Python IDEL_博主推荐

    在了解python中的tkinter模块的时候,你需要了解一些tkinter的相关知识 下面是python的API文档中的一个简单例子: import tkinter as tk class Appl ...

  7. python--第十一天总结(paramiko 及数据库操作)

    堡垒机前戏 开发堡垒机之前,先来学习Python的paramiko模块,该模块机遇SSH用于连接远程服务器并执行相关操作 实现思路 堡垒机执行流程: 管理员为用户在服务器上创建账号(将公钥放置服务器, ...

  8. 堡垒机(paramiko)

    实现思路 堡垒机执行流程: 管理员为用户在服务器上创建账号(将公钥放置服务器,或者使用用户名密码) 用户登陆堡垒机,输入堡垒机用户名密码,现实当前用户管理的服务器列表 用户选择服务器,并自动登陆 执行 ...

  9. VueUI -- iView4.0简单使用

    一.iView(View UI) 1.简介 官网:https://www.iviewui.com/ 仓库:https://github.com/view-design/ViewUI iView 与 V ...

随机推荐

  1. AutoIt3常见问题解答

    Q1 如何调试脚本? MsgBox(0,"测试",$var) ConsoleWrite("var=" & $var & @CRLF)   Q2 ...

  2. VueJS字符串反转:String.reverse()

    HTML <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <titl ...

  3. C​P​U​_​C​S​t​a​t​e​_​P​S​t​a​t​e and then ACPI on Wiki

    http://wenku.baidu.com/link?url=eHbdT4EjdJx3dsQETGUIL8q1K3_EyuzGLWT0G103AEca0vs0gHR_v_3c0oaUL2gbkrr8 ...

  4. rtems 4.11 时钟驱动(arm, beagle)

    根据bsp_howto手册,时钟驱动的框架主要在 c/src/lib/libbsp/shared/Clockdrv_shell.h 文件中实现 时钟初始化 时钟驱动初始化函数为 Clock_initi ...

  5. javax.persistence.PersistenceException: org.hibernate.PersistentObjectException: detached entity passed to persist:

    javax.persistence.PersistenceException: org.hibernate.PersistentObjectException: detached entity pas ...

  6. 对于一个字符串,请设计一个高效算法,找到第一次重复出现的字符。 给定一个字符串(不一定全为字母)A及它的长度n。请返回第一个重复出现的字符。保证字符串中有重复字符,字符串的长度小于等于500。

    // 第一种方法 // ConsoleApplication10.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include < ...

  7. 通过srvctl add命令添加database信息到srvctl管理器

    ================================================通过srvctl add命令添加database信息到srvctl管理器================ ...

  8. nstall-Package : 无法找到程序包“MySql.Data.Entity.EF6”

    在vs2013中用MySQL+EF6时,会遇到版本的问题,解决方法一般如下: 1 Install-Package EntityFramework -Version 6.0.0然后Enter2 Inst ...

  9. 开始使用gradle

    前提配置gradle环境 每个gradle构建都是以一个脚本开始的.gradle构建默认的名称为build.gradle.当在shell中执行gradle命令时,gradle会去寻找为build.gr ...

  10. mac svn命令行使用入门

    本文转载至 http://blog.sina.com.cn/s/blog_6bfa2fc10101euf6.html   mac svn命令行使用入门 1. 初始化项目 svn import /Use ...