PYTHON图形化操作界面的编程七__创建菜单

十八、创建菜单

1、水平菜单的创建

创建菜单需要多条语句,所以这里通过实例来说明水平菜单的创建方法:

下面的语句可以在窗口中添加水平菜单,其中前四行语句是导入tkinter库和创建窗口w,从

第五行语句开始(红框中的语句)为创建菜单语句,运行结果如下面右图所示。

上面红框中的第一行代码为创建菜单对象m,红框中第2,3,4行代码为向菜单对象m中添加菜单项。红框中最后一条语句为将菜单显示在窗口中(实际是向窗口的“menu”属性赋值)

创建Menu对象时仍可使用前面介绍的控件的公共属性,同时菜单对象还可以使用如下的属性:

tearoff:该属性取值可以为True或False,此属性一般用在创建下拉菜单中,值为False时,创建的各级菜单间无虚线分隔。如果值为True,则上下级菜单间显示一条虚线分隔线且该菜单可以与上级菜单相分离。

menu:该属性值为下级菜单对象的名称。从而可以将另一菜单对象和本菜单项关联起来。使另一菜单项成为本菜单的子菜单。

菜单对象的的方法:

add_cascade():向菜单对象中添加菜单项。上面红框中的三行代码就使用了这个方法。

add_command():向菜单对象中增加菜单命令。

add_separator():在菜单对象中创建菜单项间的分隔线

下面通过实例来说明 上面方法的应用:

在上面的代码基础上添加下面的代码,红框中为添加的代码:下面右图为代码运行后的结果。

上面代码中第一个红框中的代码为:创建第二个菜单对象f1。第二个红框为小红框,其代码为:将新创建的菜单名称添加到原来第一个水平菜单项的menu属性中。使新创建的菜单对象成为原菜单的下级菜单。

第三个红框中共有三条语句,第一条语句在f1菜单对象中添加菜单项(用add_cascade方法创建的是菜单项,将来该菜单项下还有下级菜单)

第三个红框中的第二、三条语句均使用add.command方法向菜单对象f1中添加菜单命令,说明这两项本身就是菜单命令而无下级菜单。

第四个红框中有两条语句,第一条创建菜单分隔线,第二条创建菜单命令,并为该菜单命令的command属性赋值exit,表示选中此菜单命令后就执行“exit”命令关闭窗口,结束程序运行。上面右图是上面代码运行后的结果,子菜单中第一项为菜单项,其余这菜单命令。

下面的代码继续为第一个子菜单项添加下级菜单命令。下面右图为代码运行后的结果。

上面代码中第一个红框中的代码为创建了第三个菜单对象名称为ff1,第二个小红框中的代码为将新建立的菜单对象ff1的名称赋值给上一个菜单子项的menu属性,使新建立的菜单对象成为其子菜单项。

第三个红框中共四条代码,均用add_command方法创建,因此创建的均是菜单命令,为其指定command属性后就可以执行这些菜单命令。

下面为菜单命令指定执行的函数,为了减少代码量而不影响问题的本质,我们假设点击任一菜单命令均执行同一个函数fun,代码修改如下:下面红框中的代码为新添加的内容。

第一个红框为函数定义。为了节省篇幅我们在函数中放置了一个空语句,该语句不执行任何动作,只是占一条语句的位置。

其余红框中的代码圴相同,只是为各菜单命令设置了command属性,使点击这些菜单项时执行command属性所指定的函数。

实际使用中我们要为每个菜单命令指定不同的函数,并分别将这些函数名赋值给对应的菜单命令的command属性。

属性tearoff取值对菜单的影响大家可以自行偿试。通过上面介绍的方法我们可以构建任何结构的菜单。

2、快捷菜单的创建

快捷菜单是右击鼠标后出现的菜单,创建快捷菜单很简单,下面是创建快捷菜单的步骤:

1)先用下面的语句创建Menu对象:

q=Menu(tearoff=False)

其中 q是Menu对象的名称,属性tearoff=False是为了使创建的菜单不出现虚线分隔

2)用下面的语句向菜单对象中添加菜单命令,属性command后的值为选中该快捷菜单项后执行的函数名称。

q.add_command(label="复制",command=copy)

q.add_command(label="剪切",command=cut)

q.add_command(label="粘贴",command=paste)

3)用下面的语句将菜单绑定到窗口或其他控件,本例中绑定的是窗体。即右击窗口中的任意位置弹出快捷菜单。下面语句中的w是窗体的名称。若要绑定其他控件,则要用其他控件的名称。pop是点击鼠标右键后执行的函数或方法的名称。

w.bind("",pop)

4)用下面的代码定义pop方法,方法内容是调用菜单对象的post()方法完成参数的传递。

def

pop(event):

q.post(event.x_root,event.y_root)

5)定义选中菜单项后要执行的各函数

根据菜单项的功能,定义菜单项对应的函数,此例中要分别定义三个函数,此处只是为了验证快捷菜单项的执行情况,在每个函数中添加了一条输出语句。

def

copy():

print("copy")

def

cut():

print("cut")

def

paste():

print("paste")

最后的完整代码如下所示

上面代码运行后,在窗口空白外右击鼠标,出现快捷菜单,参见下图。

下面的代码可以创建二级快捷菜单,运行结果如下面右图所示。为了减少代码量而又不影响问题的讨论,下面代码将各菜单项的执行函数均设置为op,红框标出的代码为在上面例子的代码基础上添加的新代码。

仔细分析上面代码,不难看出,和前面下拉菜单创建时的方法是基本相同的。

python界面设置-PYTHON图形化操作界面的编程七__创建菜单相关推荐

  1. python函数做菜单_PYTHON图形化操作界面的编程七__创建菜单

    PYTHON图形化操作界面的编程七__创建菜单 十八.创建菜单 1.水平菜单的创建 创建菜单需要多条语句,所以这里通过实例来说明水平菜单的创建方法: 下面的语句可以在窗口中添加水平菜单,其中前四行语句 ...

  2. 阿里云centos7安装和卸载图形化操作界面

    登录服务器,执行如下指令安装桌面环境: 安装 MATE Desktop yum groups install "MATE Desktop" 命令输入之后,会列出一大堆文字的,然后显 ...

  3. Python自动生成代码 - 通过tkinter图形化操作生成代码框架

    Python自动生成代码 - 通过tkinter图形化操作生成代码框架 背景 脚本代码 Demo_CodeGenerator.py display.py FileHandler.py: 脚本运行结果: ...

  4. python中easygui是干嘛用的-Python简单的图形化界面——easygui

    easygui是Python的一个图形化界面的库,使用前需要先添加这个库.在cmd里运行下面命令. pip install easygui1 等待安装完成后就可以使用了. msgbox()--消息弹窗 ...

  5. 因xhost命令和DISPLAY环境变量操作不当导致无法启动Oracle图形化安装界面

    在redhat操作系统上安装Oracle 11.1时,遇到在执行runInstaller后无法启动安装图像化界面,甚是郁闷. 问题现象: 使用Xmanager2.0软件登陆AIX桌面,root用户可以 ...

  6. git只提交一张图片_Git 图形化操作之合并提交记录

    Git 图形化操作之合并提交记录 Git 图形化操作之合并提交记录 目录1.显示日志2.合并提交记录3.推送合并的提交 独立观察员 2020 年 9 月 24 日 前言:当我们使用 Git 时,有时会 ...

  7. Git 图形化操作之合并提交记录

    Git 图形化操作之合并提交记录 独立观察员 2020 年 9 月 24 日 目录 1.显示日志 2.合并提交记录 3.推送合并的提交 前言:当我们使用 Git 时,有时会遇到刚提交推送完一次修改,发 ...

  8. Windows11无法打开 WindowsTerminal 图形化设置界面

    1. Windows Terminal 虽然在 Windows11 之前 Windows Terminal 就已经出了,不过并未正式作为系统的默认终端使用,已经使用传统我们熟悉的 CMD 命令提示符窗 ...

  9. GIT命令与图形化操作

    前言 GIT的操作,分为命令符操作和图形化操作.上网搜了许多帖子,都是一些命令符,图形化的操作很少.本人认为,虽然命令符操作起来很流畅,有一种高手的风范,但对于一些初学者来说,还是比较陌生.图形化工具 ...

最新文章

  1. cocos2d+lua实现帧动画播放
  2. git for windows
  3. sqlite 实例教程 IOS下用sqlite打造词典
  4. MIT JOS学习笔记01:环境配置、Boot Loader(2016.10.22)
  5. mysql编辑前200行_巧妙使用SQL Server编辑前200行功能
  6. 前端学习(909):navigater对象
  7. Win11怎么设置桌面软件小图标 Win11设置桌面软件小图标教程
  8. 拆轮子系列--RxJava理解(一)--Map解析
  9. 旧物回收类网站源码v2.4
  10. 计算机二级MS office之excel常用函数
  11. 分享几个软件测试逻辑思维和综合面试题【含答案】
  12. android 百度地图自定义定位小箭头图标,并随着手机方向转动
  13. 三轴试验相关理论知识(1)
  14. 用计算机弹音乐我们一起猫叫,抖音上面我们一起学猫叫一起喵喵喵是什么歌 抖音学猫叫歌曲歌词...
  15. Linux平台基于poll实现网络编程IO多路复用
  16. FilterConfig.RegisterGlobalFilters 全局过滤器的用法
  17. React 环境搭建以及创建项目工程(一)
  18. 从零维到十维空间如何在纸上用手绘出来
  19. android 7.0 创建热点,win7创建wifi热点脚本分享
  20. Jest,karma结合Vue-test-utils的优秀文章

热门文章

  1. JavaScript EventLoop
  2. xadmin 更改后台一级目录名称
  3. IIS7 / IIS7.5 URL 重写 HTTP 重定向到 HTTPS(转)
  4. Java Web servletRequest
  5. 使用宝塔面板部署tp5网站
  6. 展示博客(Beta阶段)
  7. 如何解决Android 5.0中出现的警告:Service Intent must be explicit
  8. C/C++中各种类型int、long、double、char表示范围(最大最小值)
  9. 洛谷P2507 [SCOI2008]配对 题解(dp+贪心)
  10. Angular2 富文本编辑器 ng2-ckeditor 的使用