欢迎大家来到IT世界,在知识的湖畔探索吧!
带你走进 @ 机器人时代
Discover 点击上面蓝色文字,关注我们

欢迎大家来到IT世界,在知识的湖畔探索吧!
Tkinter Menu 可以说是 GUI 中“精髓所在”,它以可视化的方式将一系列的“功能选项卡”进行分组。
Tkinter Menu 控件提供了三种类型的菜单,分别是:topleve(主目录菜单)、pull-down(下拉式菜单)、pop-up(弹出式菜单,或称快捷式菜单)。
先来看代码:
欢迎大家来到IT世界,在知识的湖畔探索吧!
欢迎大家来到IT世界,在知识的湖畔探索吧!from tkinter import * import tkinter.messagebox import tkinter as tk w = tk.Tk() w.title("工作机器人时代-微信公众平台") w.geometry('500x190+710+410') w.iconbitmap('1.ico') w.resizable(False, False) def md(): tkinter.messagebox.showinfo("主菜单栏", "你正在使用主菜单栏") # 创建一个顶级菜单 m = Menu(w) # 使用 add_command()命令创建菜单 m.add_command(label="新建", command=md) m.add_command(label="编辑", command=md) m.add_command(label="高级", command=md) m.add_command(label="配置", command=md) m.add_command(label="帮助", command=md) # 显示菜单 w.config(menu=m) w.mainloop()
运行后得到:
如果我们要创建下拉菜单,可以输入以下代码:
欢迎大家来到IT世界,在知识的湖畔探索吧!from tkinter import * import tkinter as tk w = tk.Tk() w.title("工作机器人时代-微信公众平台") w.geometry('500x190+710+410') w.iconbitmap('1.ico') w.resizable(False, False) # 创建一个顶级菜单 m = Menu(w) #新增子菜单 u = Menu (m, tearoff=False) # 使用 add_command()命令创建菜单 m.add_cascade (label="文件",menu=u) m.add_cascade (label="编辑") m.add_cascade (label="高级") m.add_cascade (label="配置") m.add_cascade (label="帮助") #新增"文件"菜单的菜单项 u.add_command (label="新建文件",accelerator="W") u.add_command (label="新建文件夹", accelerator="O") u.add_command (label="保存文件",accelerator="S") # 添加一条分割线 u.add_separator () u.add_command (label="退出系统",accelerator="Q",command=w. quit) # 显示菜单 w.config(menu=m) w.mainloop()
运行后得到:
点击文件,弹出下拉菜单,点击退出系统,程序关闭。下面我们增加代码,让鼠标点击新建文件或按快捷键Ctrl+w键的时候弹出对话框:
欢迎大家来到IT世界,在知识的湖畔探索吧!from tkinter import * import tkinter.messagebox import tkinter as tk w = tk.Tk() w.title("工作机器人时代-微信公众平台") w.geometry('500x190+710+410') w.iconbitmap('1.ico') w.resizable(False, False) def md(): tkinter.messagebox.showinfo("新消息", "你正点击新建文件") def md1(x): #print(x) tkinter.messagebox.showinfo("新消息", "你正按快捷键新建文件命令") # 创建一个顶级菜单 m = Menu(w) #新增子菜单 u = Menu (m, tearoff=False) # 使用 add_command()命令创建菜单 m.add_cascade (label="文件",menu=u) m.add_cascade (label="编辑") m.add_cascade (label="高级") m.add_cascade (label="配置") m.add_cascade (label="帮助") #新增"文件"菜单的菜单项 u.add_command (label="新建文件",command=md,accelerator="W") u.add_command (label="新建文件夹", accelerator="O") u.add_command (label="保存文件",accelerator="S") # 添加一条分割线 u.add_separator () u.add_command (label="退出系统",accelerator="Q",command=w. quit) #捕获键盘事件 w.bind ('<Control-w>',md1) w.bind ('<Control-W>',md1) # 显示菜单 w.config(menu=m) w.mainloop()
这里要注意,当键盘按键的时候会返回函数一个参数,因此定义函数的时候要写成def md1(x):而不能写成def md1(),运行后效果如下:
如果我们想在窗体界面右键点击后弹出一个菜单,在w.config(menu=m)前面插入以下代码:
欢迎大家来到IT世界,在知识的湖畔探索吧!def fc(): tkinter.messagebox.showinfo("新消息", "您通过弹出菜单执行了命令") mu = tk.Menu(w, tearoff=False)#定义弹出的菜单 mu.add_command(label="复制", command=fc) mu.add_command(label="粘贴", command=fc) mu.add_command(label="剪切", command=fc) def cod(event): # 使用 post()在指定的位置显示弹出菜单 mu.post(event.x_root, event.y_root) w.bind("<Button-3>", cod)#鼠标点击右键
用fc函数定义弹出菜单中的按钮事件,用cod函数来定义右键点击后显示弹出菜单:
如果希望在窗体的任意位置布局一个按钮,当鼠标点击时弹出操作菜单,参考以下代码:
欢迎大家来到IT世界,在知识的湖畔探索吧!
from tkinter import * import tkinter as tk w = tk.Tk() w.title("工作机器人时代-微信公众平台") w.geometry('500x190+710+410') w.iconbitmap('1.ico') w.resizable(False, False) #创建一个菜单按钮 mb=Menubutton(w, text='点击进行操作', relief='solid') # 设置位置(布局) mb.grid(padx=35, pady=35) #添加菜单,使用 tearoff 参数不显示分割线 fm=Menu(mb,tearoff = False) fm.add_command(label='新建') fm.add_command(label='删除') fm.add_command(label='复制') fm.add_command(label='保存') # 显示菜单,将菜单命令绑定在菜单按钮对象上 mb.config(menu=fm) w.mainloop()
运行后得到如下效果:
我们来看看Menu菜单控件都有哪些属性:
|
activebackground |
设置活动背景色 |
|
activeborderwidth |
设置活动边框宽度 |
|
activeforeground |
设置活动前景色 |
|
bg |
设置背景色 |
|
bd |
设置边框宽度 |
|
cursor |
光标的显示样式 |
|
disabledforeground |
菜单项的状态为DISABLED时的文字颜色 |
|
font |
设置字体 |
|
fg |
设置前景色,也就是文字的颜色 |
|
postcommand |
点击该菜单时,调用回调函数。 |
|
relief |
设置3D效果 |
|
selectcolor |
如果选中显示selectcolor设置的颜色 |
|
tearoff |
将每个菜单分离出去,单独形成一个子窗口 |
|
title |
设置tear-off子窗口的标题 |
除了这些属性,还有方法:
|
add_cascade(options) |
添加一个父菜单,将一个指定的子菜单,通过参数与父菜单连接,从而创建一个下拉菜单 |
|
add_checkbutton(options) |
添加一个多选按钮的菜单项 |
|
add_command(options) |
添加一个普通的命令菜单项 |
|
add_radiobutton(options) |
添加一个单选按钮的菜单项 |
|
add_separator(options) |
添加一条分割线 |
|
add(add(itemType, options)) |
添加菜单项 |
|
delete(index1, index2=None) |
1. 删除 index1 ~ index2(包含)的所有菜单项 |
|
entrycget(index, option) |
获得指定菜单项的某选项的值 |
|
entryconfig(index, options) |
设置指定菜单项的选项 |
|
insert(index, itemType, options) |
插入指定类型的菜单项到 index 参数指定的位置,类型可以是: |
|
invoke(index) |
调用 index 指定的菜单项相关联的方法 |
|
post(x, y) |
在指定的位置显示弹出菜单 |
|
type(index) |
获得 index 参数指定菜单项的类型 |
|
unpost() |
移除弹出菜单 |
|
yposition(index) |
返回 index 参数指定的菜单项的垂直偏移位置 |
|
index(index) |
返回与 index 参数相应的选项的序号 |
Menu 控件的 options 参数:
|
accelerator |
1. 设置菜单项的快捷键,会显示在菜单项目的右边 |
|
command |
选择菜单项时执行的 callback 函数 |
|
label |
定义菜单项内的文字 |
|
menu |
此属性与 add_cascade() 方法一起使用,用来新增菜单项的子菜单项 |
|
selectcolor |
指定当菜单项显示为单选按钮或多选按钮时选择中标志的颜色 |
|
state |
定义菜单项的状态 |
|
onvalue/offvalue |
默认情况下,variable 选项设置为 1 表示选中状态 |
|
tearoff |
设为 True,在菜单项的上面就会显示一个可选择的分隔线 |
|
underline |
设置菜单项中字符的下画线 |
|
value |
设置按钮菜单项的值,通过该值与 variable 选项的值对比,即可判断用户选中了哪个按钮 |
|
variable |
当菜单项是单选按钮或多选按钮时与之关联的变量 |
坚持学习,每天都能进步一点!
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/124414.html