专栏首页叶子陪你玩编程【tkinter系列 第十一课 Menu窗口部件 】

【tkinter系列 第十一课 Menu窗口部件 】

前言

python中通常我们写程序,显示结果和操作都是在终端区,如果要想实现一个有显示界面的程序那该怎样实现呢?python中有好几个库都可以实现,这个系列我们一起来学习如何使用python自带的tkinter库来实现。

本节课将要学习Menu窗口部件,Menu是菜单栏的意思,菜单栏可以用来实现下拉和弹出式菜单,点击菜单后弹出的一个选项列表,用户可以从中选择。什么时候用:在设计比较复杂的软件时,为了使得用户体验更好,不能在一个界面上将所有操作都显示出来,通过菜单栏配合TopLevel,用户可以根据自己的需要自由选择。

下面图片中的 文件,编辑,格式等都是菜单,下拉选项是具体的功能。

创建一个最简菜单

代码:

from tkinter import *import tkinter.messageboxroot = Tk()root.geometry("400x200")root.title("父窗口")
def hello():    print("hello!")
# 创建顶部菜单栏menubar = Menu(root)menubar.add_command(label="打印", command=hello)menubar.add_command(label="关闭", command=root.quit)
# 显示菜单栏root.config(menu=menubar)
mainloop()

效果:

创建下拉菜单

代码:

from tkinter import *import tkinter.messageboxroot = Tk()root.geometry("400x200")root.title("父窗口")
def hello():    print("hello!")
# 创建顶部菜单栏menubar = Menu(root)
# 1.创建文件下拉菜单filemenu = Menu(menubar, tearoff=0)# 给下拉菜单添加选项filemenu.add_command(label="打开", command=hello)filemenu.add_command(label="保存", command=hello)filemenu.add_separator()filemenu.add_command(label="退出", command=root.quit)# 添加到菜单栏menubar.add_cascade(label="文件", menu=filemenu)
# 2.创建编辑下拉菜单editmenu = Menu(menubar, tearoff=0)editmenu.add_command(label="剪切", command=hello)editmenu.add_command(label="复制", command=hello)editmenu.add_command(label="粘贴", command=hello)# 添加到菜单栏menubar.add_cascade(label="编辑", menu=editmenu)
# 3.创建帮助下拉菜单helpmenu = Menu(menubar, tearoff=0)helpmenu.add_command(label="关于python", command=hello)helpmenu.add_command(label="发送反馈", command=hello)# 添加到菜单栏menubar.add_cascade(label="帮助", menu=helpmenu)
# 显示菜单栏root.config(menu=menubar)
mainloop()

效果:

解释:

下拉菜单和前面一个最简菜单其实非常相似,主要的不同点就是就是下拉菜单是使用add_cascade去绑定到父菜单的。

拓展

通过和TopLevel以及tkinter.filedialog可以实现打开新的窗口和打开文件等选项,更多用法可以查看官方文档,这里只是一个简单的案例启发,以后的实际项目案例中会使用到。

代码:

from tkinter import *import tkinter.messageboximport tkinter.filedialog
root = Tk()root.geometry("400x200")root.title("父窗口")
def about():    top=Toplevel()    top.geometry("400x200")    top.title("关于")    Label(top,text="tkinter非常好玩").pack()
def openFile():    filename=tkinter.filedialog.askopenfile()    print(filename)
# 创建顶部菜单栏menubar = Menu(root)
# 1.创建文件下拉菜单filemenu = Menu(menubar, tearoff=0)# 给下拉菜单添加选项filemenu.add_command(label="打开", command=openFile)filemenu.add_command(label="关于", command=about)filemenu.add_separator()filemenu.add_command(label="退出", command=root.quit)# 添加到菜单栏menubar.add_cascade(label="文件", menu=filemenu)
# 显示菜单栏root.config(menu=menubar)
mainloop()

效果:

本文分享自微信公众号 - 叶子陪你玩编程(gh_cd062460d25e),作者:青叶子

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-01-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 如何利用python识别验证码和车牌号?

    想要自动爬取网页内容,但是有些网站需要输入验证码,而验证码总是随机的,为了解决这个问题,首先需要自动获取验证码,然后将其下载下来,最后识别其中文字内容。

    用户7054460
  • python图像处理-实现验证码图片(上)

    本系列课程是针对无基础的,争取用简单明了的语言来讲解,学习前需要具备基本的电脑操作能力,准备一个已安装python环境的电脑。如果觉得好可以分享转发,有问题的地...

    用户7054460
  • 标记语言-Markup Language

    标记:就是用一些符号来区分不同的内容的,就好比全班同学的书本都放在一起,有些外观是一样的,要如何区分开呢?有些人会写个名字,有些人会折个角等,目的就是让每个人都...

    用户7054460
  • 机器学习储备(1):协方差和相关系数

    为了深刻理解机器学习算法的原理,首先得掌握其中涉及到的一些基本概念和理论,比如概率,期望,标准差,方差。在这些基本概念上,又衍生出了很多重要概念,比如协方差,相...

    double
  • kvm虚拟机日常操作命令梳理

    KVM虚拟机的管理主要是通过virsh命令对虚拟机进行管理。废话不多说,下面列出kvm日常管理中的命令 1)查看KVM虚拟机配置文件及运行状态 KVM虚拟机默认...

    洗尽了浮华
  • 【leetcode系列】88.合并两个有序数组

    这道题目其实和基本排序算法中的 merge sort非常像,但是 merge sort 很多时候,合并的时候我们通常是 新建一个数组,这样就很简单。但是这道题目...

    lucifer210
  • 升级Xcode8之后快捷键无法注释

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/...

    用户1451823
  • 机器学习:预测性维修的数据基础

    预测性维修作为工业互联网中的最核心应用,无论是早期的探索者还是新进的工业互联网平台都将它作为主要切入口。当我们谈到应用落地时,可能很多企业会有这样的误解或疑问:...

    企鹅号小编
  • 调整 wal_segment_size 导致PostgreSQL 停止服务

    近一段时间一致是 MYSQL ,PostgreSQL 两条腿走路,这样做是有原因的,不是所有的企业都是互联网企业,也不是所有企业的程序员都能良好的理解MYSQL...

    AustinDatabases
  • 云端架构师养成系列之一:高性能云硬盘入门与实战(视频)

    云硬盘与云主机一样,是云计算用户接触最多的云服务之一。但是许多用户可能对它并不是特别了解,仍然像本地使用硬盘那样对待云硬盘。有的开发者甚至不太在意选择具体哪种云...

    云加社区

扫码关注云+社区

领取腾讯云代金券