【tkinter系列 第十一课 Menu窗口部件 】
- 2020 年 3 月 11 日
- 筆記
前言
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()
效果:

