"""
添加顶层菜单:
1、我们可以使用Menu类来新建一个菜单,Menu和其他的组件一样,第一个是parent,这里通常可以为窗口
2、然后我们可以用add_command方法来为它添加菜单项,
如果该菜单是顶层菜单,则添加的菜单项依次向右添加。
如果该菜单是顶层菜单的一个菜单项,则它添加的是下拉菜单的菜单项。
3、add_command 中的参数常用的有 label 属性,用来指定的 是菜单项的名称,command 属性用来指定被点击的时候调用的方法,
acceletor 属性指定的是快捷键,underline 属性 是是否拥有下划线。
4、最后可以用窗口的 menu 属性指定我们使用哪一个作为它 的顶层菜单。 ************有子菜单的情况*************
1、如果有子菜单,则情况稍微复杂点,这个时候,我们需 要使用 add_cascade,cascade 可以理解为“级联”,即它 的作用只是为了引出后面的菜单。
2、add_cascade 的一个很重要的属性就是 menu 属性,它指 明了要把那个菜单级联到该菜单项上,当然,还必不可少 的就是 label 属性,用于指定该菜单项的名称。
3、我们先新建一个 Menu 的实例,然后使用 add_command 来 添加菜单项,这样等该菜单建立完毕,我们要把它作为另 一个菜单项的子菜单,就需要使用 add_cascade 方法 """ from tkinter import * root = Tk()
root.wm_title("菜单")
root.geometry("400x300+300+100") menubar = Menu(root) # for item in ['文件','编辑','视图','关于']:
# # add_command 添加菜单项
# menubar.add_command(label = item) fmenu = Menu(menubar)
for item in ['新建','打开','保存','另存为']:
fmenu.add_command(label = item) emenu = Menu(menubar)
for item in ['复制','粘贴','剪切']:
emenu.add_command(label = item) vmenu = Menu(menubar)
for item in ['默认视图','新式视图']:
vmenu.add_command(label = item) amenu = Menu(menubar)
for item in ['版权信息','其他说明']:
amenu.add_command(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.config(menu=menubar)#将root根窗口的顶级菜单设置为menu
root.mainloop()
运行结果如下:

"""
************弹出菜单*****************
1.弹出菜单又叫“上下文菜单”,也叫“右键菜单”,它 通常是鼠标单击右键产生的菜单,因此会有“右键菜单” 的说法。
2.其实很多界面库里面都是给出了弹出菜单的简单的制作 方法的,但是 tkinter 里面我们却只能使用比较原始的事 件绑定的方式去做。
3.大体思路就是:我们先新建一个菜单,然后向菜单项中 添加各种功能,最后我们监听鼠标右键消息,如果是鼠标 右键被单击,此时可以根据需要判断下鼠标位置来确定是 哪个弹出菜单被弹出,然后使用 Menu 类的 pop 方法来弹出 菜单。 ************提前说明*************
1.Menu 类里面有一个 post 方法,它接收两个参数,即 x 和 y 坐标,它会在相应的位置弹出菜单。
2.还记得用 bind 方法来绑定事件吗?而且要记得鼠标右键 是用的<Button-3>。 """ from tkinter import * def test():
global root
Label(root,text = "测试").pack() root = Tk()
menubar = Menu(root) for x in ['vb','c','java','php']:
menubar.add_command(label = x) menubar.add_command(label = 'python',command = test) # 插入分割线
# 插入分割线和插入正常的菜单项操作很相似,只是使用 的方法是 add_separator,该方法无需参数。
menubar.add_separator() def pop(event):
menubar.post(event.x_root,event.y_root) root.bind("<Button-3>",pop)
root.mainloop()
"""
**************checkbutton 与 radiobutton********
1.checkbutton 原本是指“复选按钮”,radiobutton 原本 是指“单选按钮”。
2.单选按钮与复选按钮是相对来说的,即在这一组中,单 选按钮中只能有一个是被选定的,即一个人的性别是女的, 就一定不是男的,但是复选按钮对应的情况则是可以有多 个同时被选定,比如一个人即可以喜欢篮球,也可以喜欢 足球,还有可能喜欢乒乓球,等等。
3.在菜单中,也有类似的概念,即单选菜单和复选菜单。 它们分别用 add_radiobutton 和 add_checkbutton 来分别 添加。
4.这两种菜单都是如果一旦被选定,那么前面会有一个类 似于对号的标记出现,checkbutton 可以多个同时被选定, 但是 radiobutton 却只能被选定一个,即这个被选定了, 会自动取消前一个的选定。 """ from tkinter import * root = Tk()
m = Menu(root)
m2 = Menu(m)
for item in ['python','perl','php','ruby']:
m2.add_checkbutton(label = item)
m2.add_separator() for item in ['java','c++','c']:
m2.add_radiobutton(label = item) m.add_cascade(label = 'lan',menu = m2)
root['menu'] = m
root.mainloop()
运行结果如下:
 

GUI tkinter (Menu)菜单项篇的更多相关文章

  1. menu菜单项和menubutton菜单按钮的结合使用

    <!--创建需要显示的菜单按钮(munebutton),menu指定的是菜单项--><a href="javascript:void(0)" id="m ...

  2. Android Studio —— 创建Menu菜单项

    大多数android程序的右上角都会设置一个菜单按钮比如微信的界面右上角的加号. 这个需要在layout同级目录下新建文件夹命名为menu,再右击新建的menu新建xml文件:

  3. [MFC] 对话框菜单项Menu选中打勾(单选,多选)

    近期需要实现一个功能:MFC对话框中,一项菜单下有五个菜单项,改变菜单项选中状态,每次只能选择其中一个打勾.(单选) 然后在网上搜了下资料,稍微总结下,以防后面用到. 1.单选实现: CMenu* m ...

  4. 菜单项(Menu)的初步认识 以及 多级菜单(SubMenu)的初步认识

    MainActivity.class public class MainActivity extends AppCompatActivity { private TextView textView; ...

  5. tkinter menu

    python] view plain copy '''''Tkinter教程之Menu篇''' '''''1.创建一个简单的Menu''' # 添加菜单hello和quit,将hello菜单与hell ...

  6. 微信禁用右上角的分享按钮,WeixinJSBridge API以及隐藏分享的子按钮等菜单项

    <!--禁用微信分享按钮--> <script> function onBridgeReady() { WeixinJSBridge.call('hideOptionMenu' ...

  7. 【crunch bang】 增加“菜单项”

    [右键菜单]->[Settings]->[Openbox]->[GUI Menu Editor] 挑选合适的位置,增加[菜单项],编辑内容.

  8. Android简易实战教程--第二十三话《绚丽的菜单项》

    转载本博客请注明出处:点击打开链接  http://blog.csdn.net/qq_32059827/article/details/52327456 今天这篇稍微增强点代码量,可能要多花上5分钟喽 ...

  9. python gui tkinter用法杂记

    1.treeview遍历 iids = tree.selection() t = tree.get_children() for i in t: print(tree.item(i,'values') ...

随机推荐

  1. 搭建自己的技术博客系列(一)使用 hexo 搭建一个精美的静态博客

    1.安装 Git 和 nodejs https://hexo.io/zh-cn/docs/

  2. 分布式之分布式事务、分布式锁、接口幂等性、分布式session

    一.分布式session session 是啥?浏览器有个 cookie,在一段时间内这个 cookie 都存在,然后每次发请求过来都带上一个特殊的 jsessionid cookie,就根据这个东西 ...

  3. Golang 数组 切片 字典 基本知识点

    数组 数组的声明 var arrayName [arraySize]dataType eg: var array1 [5]int 在声明数组时,必须指定数组名,数组长度和数组元素的类型. 数组的初始化 ...

  4. Java IO/输入与输出

    File类 File类是IO包中唯一代表磁盘文件本身信息的类,而不是文件中的内容 File类定义了一些与平台无关的方法来操纵文件,例如,创建,删除文件和重命名文件 Java中的目录被当作一种特殊文件, ...

  5. jumper-server-资源管理

    https://cloud.tencent.com/developer/article/1460469 此链接是百度搜索的 , 比较详细 https://www.cnblogs.com/zsl-fin ...

  6. div标签嵌套原则详解(转载)

    这个也许平时人们不注意,但是非常有用,尤其是当你实在找不到原因为什么网页显示错误的时候. XHTML 的标签有许多:div.ul.li.dl.dt.dd.h1~h6.p.a.addressa.span ...

  7. mycat快速搭建入门

    mycat是一个数据库中间件,在此不做多介绍,今天我们直接上入门级的搭建demo. 本例子用的是两台mysql数据库 搭建mycat环境之前确保自己的机器上已经安装了djk1.7及以上虚拟机,因为my ...

  8. Hive介绍和安装部署

        搭建环境 部署节点操作系统为CentOS,防火墙和SElinux禁用,创建了一个shiyanlou用户并在系统根目录下创建/app目录,用于存放 Hadoop等组件运行包.因为该目录用于安装h ...

  9. asp.net core 使用HttpClientFactory Polly实现熔断降级

    前言 在++NET Core2.1++后也是增加更新了很多东西,当然HttpClientFactory更新中的一部分.虽然说HttpClient这个实现了disposable,但使用它的时候用usin ...

  10. html常见的块元素与内联(行内)元素用法说明(一)

    html平时常见的块元素有:div, p, h1, h2, h3等,内联元素有:span, a, img等. 块元素的属性:无论内容是什么,都会独占一整行.主要用于页面布局. 内联元素的属性:只占自身 ...