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+PySide6做了个图形化番茄钟,这下可以提醒自己放松一下了。

    以Pyside6为界面库的图形化番茄钟 总览 当前版本未实现功能 开发过程时的反馈 项目依赖 我的想法 源代码 本项目是Python&PySide6构建的番茄钟软件,这是我的第一个独立项目. ...

  4. 编写python程序输出图形_python 图形化编程---文本输入框

    函数介绍 mulenterbox()--文本输入框 multenterbox(msg=' ', title=' ', fields=(), values=()) 其中values是输入的默认值.fei ...

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

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

  6. GIT命令与图形化操作

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

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

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

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

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

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

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

最新文章

  1. [二]Java虚拟机 jvm内存结构 运行时数据内存 class文件与jvm内存结构的映射 jvm数据类型 虚拟机栈 方法区 堆 含义...
  2. Idea--使用Idea调试设置
  3. 一文尽览5G全产业链及新机遇
  4. master中的系统目录与用户数据库中的区别
  5. 青龙羊毛——鸡厂签到
  6. MySQL事务的读脏
  7. boost::hana::when用法的测试程序
  8. tkinter frame背景色_Tkinter教程-基础组件(三)
  9. mysql的1045 28000 排查方法
  10. oracle中sum和count可以嵌套吗_【分享吧】Oracle查询转换
  11. [react] React怎样引入svg的文件?
  12. pythonchallenge_level2
  13. Word2019 mac 16.46beta更新(兼容big sur,适配M1)
  14. ib_logfile和mysql_bin_mysql的innodb中事务日志ib_logfile
  15. 今年的大环境很差,创业失败的和失去工作的特别多
  16. sklearn实践之——计算回归模型的四大评价指标(explained_variance_score、mean_absolute_error、mean_squared_error、r2_score)
  17. 阿里巴巴矢量图标库批量添加图标
  18. Anaconda下载以及创建自己的环境
  19. Python 学习入门(26)—— 装饰器
  20. 小步快跑是这样玩的(上)

热门文章

  1. string来存放二进制数据
  2. Qt中用ODBC连接excel中文乱码问题
  3. HDU4549 M斐波那契数列(矩阵快速幂+费马小定理)
  4. 矩阵运算最快的库有哪些
  5. sqli-labs(10)
  6. 《架构漫谈》读书笔记五
  7. jmeter(十八)关联之XPath Extractor
  8. 软件工程第二次作业—结对编程
  9. mybatis 中#和$的区别
  10. 《算法导论》(一)--插入排序与合并排序