【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()
效果:

