学习笔记(56):Python实战编程-Menu

立即学习:https://edu.csdn.net/course/play/19711/343119?utm_source=blogtoedu

1.菜单menu:

1)弹出式菜单,类似与电脑桌面右击弹出的菜单成为弹出菜单;

2)窗体式菜单:类似于word上面的菜单栏

 

2.窗体菜单创建的步骤

1)创建一个菜单栏

elf.menu = tkinter.Menu(self.root)#创建菜单

2)在菜单栏中创建子菜单

        self.file_menu = tkinter.Menu(self.menu,#主菜单tearoff = False)

3)给子菜单添加菜单项及设置菜单项的名字和需要绑定的事件,

注:关闭窗体的事件可以直接调用self.root.quit()来实现

        self.file_menu.add_command(label = "打开",#设置子菜单项的名字command = self.file_handle_1#设置子菜单项需要执行的事件)self.file_menu.add_command(label = "保存",#设置菜单项的名字command = self.file_handle_2#设置子菜单项需要执行的事件)self.file_menu.add_separator()#添加子菜单项分割线self.file_menu.add_command(label = "关闭",#设置子菜单项的名字command = self.root.quit#设置子菜单项需要执行的事件

4)向菜单栏或者主菜单中添加子菜单

 #---------------------将子菜单添加到主菜单中----------------------
self.menu.add_cascade(label = "文件",#为子菜单设置名字menu = self.file_menu#将子菜单添加到主菜单中,需要添加的子菜单)

 5)在窗体中显示主菜单或者说是菜单栏

self.root.config(menu = self.menu)

 

3.弹出菜单的创建步骤

1)创建子菜单:这步与窗体菜单的创建子菜单是一样的

self.popmenu = tkinter.Menu(self.root,tearoff = False)#创建菜单

2)给子菜单添加菜单项及菜单项的命名、事件的绑定

        self.popmenu.add_command(label = "我是弹出菜单",#弹出菜单项的名字command = self.pop_handle_1#弹出菜单项绑定的事件)

3)定义在窗体中显示弹出窗体的事件(post)

#--------------弹出菜单事件---------------------
def pop_menu_handle(self,event):self.popmenu.post(event.x_root,event.y_root)#设置弹出的位置,这是跟随着事件发生的位置

4)给窗体绑定弹出菜单弹出的事件

self.root.bind("<Button-3>",self.pop_menu_handle)#将弹出菜单作为一个事件绑定给窗体

 

注:菜单项事件的绑定是通过创建菜单项“command=事件”来进行绑定的

 

4.完整代码

import tkinter#导入创建窗体的相关模块class Mainwindow():#创建窗口类def __init__(self):self.root = tkinter.Tk()#创建主体窗口self.root.title('linlianqin')#定义窗体的名字self.root.geometry('500x500')#定义窗体的初始大小self.root.maxsize(1200,1200)#设置窗口可以显示的最大尺寸self.create_menu()self.pop_menu()self.root.bind("<Button-3>",self.pop_menu_handle)#将弹出菜单作为一个事件绑定给窗体self.root.mainloop()#显示窗口,这个代码一定要放在所有窗口设置的后面#------------创建窗体菜单------------------def create_menu(self):self.menu = tkinter.Menu(self.root)#创建菜单#-------------------------------------#创建一个子菜单1------------------------------------self.file_menu = tkinter.Menu(self.menu,#主菜单tearoff = False)#----------------创建子菜单的菜单项1-----------------self.file_menu.add_command(label = "打开",#设置子菜单项的名字command = self.file_handle_1#设置子菜单项需要执行的事件)self.file_menu.add_command(label = "保存",#设置菜单项的名字command = self.file_handle_2#设置子菜单项需要执行的事件)self.file_menu.add_separator()#添加子菜单项分割线self.file_menu.add_command(label = "关闭",#设置子菜单项的名字command = self.root.quit#设置子菜单项需要执行的事件)#关闭窗口的事件可以直接调用内置的函数#---------------------将子菜单添加到主菜单中----------------------self.menu.add_cascade(label = "文件",#为子菜单设置名字menu = self.file_menu#将子菜单添加到主菜单中,需要添加的子菜单)#---------------------------------# 创建一个子菜单2------------------------------self.edit_menu = tkinter.Menu(self.menu, #主菜单tearoff=False)#----------------创建子菜单的菜单项2-----------------self.edit_menu.add_command(label = "剪切",#设置子菜单项的名字command = self.edit_handle_1#设置子菜单项需要执行的事件)self.edit_menu.add_command(label = "复制",#设置菜单项的名字command = self.edit_handle_2#设置子菜单项需要执行的事件)self.edit_menu.add_separator()#添加子菜单项分割线self.edit_menu.add_command(label = "粘贴",#设置子菜单项的名字command = self.edit_handle_2#设置子菜单项需要执行的事件)#---------------------将子菜单添加到主菜单中----------------------self.menu.add_cascade(label = "编辑",#为子菜单设置名字menu = self.edit_menu#将子菜单添加到主菜单中,需要添加的子菜单)#---------------------主菜单的显示------------------self.root.config(menu = self.menu)#-------创建弹出菜单:弹出菜单就相当于一个子菜单一样,只不过是需要右击才会出现的,对于窗体来说,弹出菜单相当于一个事件----------------------def pop_menu(self):self.popmenu = tkinter.Menu(self.root,tearoff = False)#创建菜单self.popmenu.add_command(label = "我是弹出菜单",#弹出菜单项的名字command = self.pop_handle_1#弹出菜单项绑定的事件)self.popmenu.add_command(label = "linlianqin",#弹出菜单项的名字command = self.pop_handle_2#弹出菜单项绑定的事件)#---------------------窗体菜单的处理事件------------------------def file_handle_1(self):passdef file_handle_2(self):passdef edit_handle_1(self):passdef edit_handle_2(self):pass#---------------------弹出菜单的处理事件------------------------def pop_handle_1(self):passdef pop_handle_2(self):pass#--------------弹出菜单事件---------------------def pop_menu_handle(self,event):self.popmenu.post(event.x_root,event.y_root)#设置弹出的位置,这是跟随着事件发生的位置if __name__ == '__main__':Mainwindow()#将窗体类实例化

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/256800.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SystemCenter2012SP1实践(19)集成WSUS更新服务器2012

今天我们的任务是配置一台WSUS&#xff08;Windows更新服务器&#xff09;&#xff0c;以方便后期通过"基线"与其组合&#xff0c;完成虚拟机的系统补丁升级。WSUS是Windows系统运维自动化的一个重要组成部分&#xff0c;通过它&#xff0c;能够节省我们很多的运维时…

像元尺寸计算

像元尺寸 X 总像素大小 感光芯片尺寸&#xff08;图像区域大小&#xff09;

win7右键点击文件夹进入命令窗口方法

方法一&#xff1a;按住shift键&#xff0c;鼠标右击&#xff0c;会出现"在此处打开命令窗口"&#xff1b;方法二&#xff1a;修改注册表&#xff0c;为鼠标右键添加打开命令行功能&#xff1b;(1)将下列内容赋值到记事本中&#xff0c;并保存为.reg文件。Windows Re…

教你学会Linux/Unix下的vi文本编辑器

vi编辑器是Unix/Linux系统管理员必须学会使用的编辑器。看了不少关于vi的资料&#xff0c;终于得到这个总结。首先&#xff0c;记住vi编辑器的两个模式&#xff1a;1、命令模式2、编辑模式。在一个UNIX/Linux的shell命令或者一个以斜杠&#xff08;/&#xff09;、问号&#xf…

C++函数返回引用的含义

引用的意思就是说返回变量的地址而非变量本身。这样子函double数结束之后存储返回值的内存单元不会被销毁&#xff0c;保留了它的地址。 例如下面这个例子: int a1,b; ba; b; 这个例子里执行完之后a为1&#xff0c;而b为2。 但这个例子&#xff1a; int a1; int *b&#xff1b;…

LintCode: 3 Sum

C 把3个数求和&#xff0c;转变为2个数求和 1. 把数组排序 2. 注意过滤重复值 3. 从前到后遍历&#xff0c;游标i 4. 从后边数中找start &#xff0b; end &#xff1d; -arr[i]的2 sum 5. start &#xff0b; end < -arr[i], start 6. start end > -arr[i], end-- 7. s…

$* $@ $# $? $$ $! $0 $_

特殊参数&#xff1a; [xiluhuavm-xiluhua][~]$ set one two three  #使用set命令设置位置参数[xiluhuavm-xiluhua][~]$ echo $*        #打印所有位置参数 one two three[xiluhuavm-xiluhua][~]$ echo $        #打印所有位置参数 one two three[xiluhuavm-…

最优化课堂笔记03:整数规划

二、整数规划问题的求解方法&#xff1a;&#xff08;重点&#xff1a;分枝定界法&#xff09; 1.割平面法 1&#xff09;基本思想 2&#xff09;求解步骤 2&#xff09;重点&#xff1a;分枝定界法&#xff08;极大化的问题&#xff09;考试不会分很多次枝&#xff0c;用图解…

CodeIgniter 2.X 于 PHP5.6 兼容错误

本篇文章由&#xff1a;http://xinpure.com/codeigniter-2-x-to-php5-6-compatible-error/ CI 3.0 已兼容此问题 在代码迁移的过程中&#xff0c;遇到了一个 PHP 版本兼容错误 A PHP Error was encounteredSeverity: NoticeMessage: Only variable references should be return…

自动驾驶汽车定位技术

一、高精度地图 二、汽车定位技术 三、无线通信辅助汽车定位 四、视觉辅助汽车定位 五、自动驾驶高精度地图与定位实践

正整数分解为几个连续自然数之和

题目&#xff1a;输入一个正整数&#xff0c;若该数能用几个连续正整数之和表示&#xff0c;则输出所有可能的正整数序列。 一个正整数有可能可以被表示为n(n>2)个连续正整数之和&#xff0c;如&#xff1a; 1512345 15456 1578 有些数可以写成连续N&#xff08;>1&#…

egret3D与2D混合开发,画布尺寸不一致的问题

egret3d的GUI目前还没有&#xff0c;在做3d游戏的时候没有UI可用&#xff0c;只能使用egret2d的EUI组件库&#xff0c;egret3d与egret2d混合开发&#xff0c;canvas3d的大小与位置与canvas2d并没有重合&#xff0c;导致适配ui时总是错位。在做手机屏幕适配的时候必须解决这种问…

最优化作业讲解01:标准化线性规划(LP)

1.1、错误点&#xff1a;求得了目标函数最优解&#xff0c;但是没有将结果返回去最大值 2.4、错误点&#xff1a;x2变量的处理上&#xff0c;x2不是任意变量不可以按照任意变量来进行变换 x6 x2 5&#xff0c;且x6>0 2.9、 易错点&#xff1a; 1&#xff09;基变量要满足…

hdu1428(spfa与记忆化搜索)

漫步校园 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 3508 Accepted Submission(s): 1066Problem DescriptionLL最近沉迷于AC不能自拔&#xff0c;每天寝室、机房两点一线。由于长时间坐在电脑边&#xff…

explicit关键字详解(C++ )

一&#xff1a;首先, C中的explicit关键字只能用于修饰只有一个参数的类构造函数, 它的作用是表明该构造函数是显示的, 而非隐式的, 跟它相对应的另一个关键字是implicit, 意思是隐藏的,类构造函数默认情况下即声明为implicit(隐式). class CxString // 没有使用explicit关键…

React Native 常见问题集合

在使用React Native时候&#xff0c;我记录下比较常遇到的问题&#xff0c;分为以下几类&#xff1a; 1. 调试问题 2. 写法问题 3. 疑难问题 4. 奇怪问题 调试问题 1. 在react-native run-android运行后&#xff0c;真机上打开的空白页面。 我测试机是红米2A&#xff08;Androi…

算法:字符串消除问题的数学证明

问题&#xff1a; 给定一个字符串&#xff0c;仅由A、B、C3个字母组成。当出现连续两个不同的字母时&#xff0c;你可以用另外一个字母替换它&#xff0c;如有AB或BA连续出现&#xff0c;你把它们替换为字母C&#xff1b;有AC或CA连续出现时&#xff0c;你可以把它们替换为字母…

学习笔记(57):Python实战编程-Treeview

立即学习:https://edu.csdn.net/course/play/19711/343120?utm_sourceblogtoedu 1.树状结构Treeview:分为树状折叠式列表和列表显示&#xff0c;是一种很重要数据列表展示的形式 2.树状列表建立步骤&#xff1a; 1&#xff09;创建一个树状列表&#xff1a;在这里可以设置显示…

ios 常用操作-1

项目中可能会用到的一些技巧方法&#xff0c;做个记录&#xff0c;已被不时之需。 一。程序在运行过程中不锁屏&#xff1f; [UIApplication sharedApplication].idleTimerDisabledYES; 二。显示被view 或 control遮盖的背景内容。比如有时在不同的ios版本上 tableview cell上画…

(视觉和激光传感器)SLAM 做室内GPS与室外真实GPS在无人机上的对比

1、室外无人机GPS的作用 1&#xff09;记录实时无人机起飞点与当前飞行无人机的绝对位置关系&#xff0c;显示当面无人机离起飞点的真实距离 2&#xff09;做室外无人机悬停的功能&#xff0c;使用GPS当前点与悬停点GPS经纬度做对比 3&#xff09;无人机上层应用&#xff0c…