­

【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()

效果: