立即學習:https://edu.csdn.net/course/play/19711/343119?utm_source=blogtoedu
1.菜單menu:
1)彈出式菜單,類似與電腦桌面右擊彈出的菜單成為彈出菜單;
2)窗體式菜單:類似于word上面的菜單欄
?
2.窗體菜單創建的步驟
1)創建一個菜單欄
elf.menu = tkinter.Menu(self.root)#創建菜單
2)在菜單欄中創建子菜單
self.file_menu = tkinter.Menu(self.menu,#主菜單tearoff = False)
3)給子菜單添加菜單項及設置菜單項的名字和需要綁定的事件,
注:關閉窗體的事件可以直接調用self.root.quit()來實現
self.file_menu.add_command(label = "打開",#設置子菜單項的名字command = self.file_handle_1#設置子菜單項需要執行的事件)self.file_menu.add_command(label = "保存",#設置菜單項的名字command = self.file_handle_2#設置子菜單項需要執行的事件)self.file_menu.add_separator()#添加子菜單項分割線self.file_menu.add_command(label = "關閉",#設置子菜單項的名字command = self.root.quit#設置子菜單項需要執行的事件
4)向菜單欄或者主菜單中添加子菜單
#---------------------將子菜單添加到主菜單中----------------------
self.menu.add_cascade(label = "文件",#為子菜單設置名字menu = self.file_menu#將子菜單添加到主菜單中,需要添加的子菜單)
?5)在窗體中顯示主菜單或者說是菜單欄
self.root.config(menu = self.menu)
?
3.彈出菜單的創建步驟
1)創建子菜單:這步與窗體菜單的創建子菜單是一樣的
self.popmenu = tkinter.Menu(self.root,tearoff = False)#創建菜單
2)給子菜單添加菜單項及菜單項的命名、事件的綁定
self.popmenu.add_command(label = "我是彈出菜單",#彈出菜單項的名字command = self.pop_handle_1#彈出菜單項綁定的事件)
3)定義在窗體中顯示彈出窗體的事件(post)
#--------------彈出菜單事件---------------------
def pop_menu_handle(self,event):self.popmenu.post(event.x_root,event.y_root)#設置彈出的位置,這是跟隨著事件發生的位置
4)給窗體綁定彈出菜單彈出的事件
self.root.bind("<Button-3>",self.pop_menu_handle)#將彈出菜單作為一個事件綁定給窗體
?
注:菜單項事件的綁定是通過創建菜單項“command=事件”來進行綁定的
?
4.完整代碼
import tkinter#導入創建窗體的相關模塊class Mainwindow():#創建窗口類def __init__(self):self.root = tkinter.Tk()#創建主體窗口self.root.title('linlianqin')#定義窗體的名字self.root.geometry('500x500')#定義窗體的初始大小self.root.maxsize(1200,1200)#設置窗口可以顯示的最大尺寸self.create_menu()self.pop_menu()self.root.bind("<Button-3>",self.pop_menu_handle)#將彈出菜單作為一個事件綁定給窗體self.root.mainloop()#顯示窗口,這個代碼一定要放在所有窗口設置的后面#------------創建窗體菜單------------------def create_menu(self):self.menu = tkinter.Menu(self.root)#創建菜單#-------------------------------------#創建一個子菜單1------------------------------------self.file_menu = tkinter.Menu(self.menu,#主菜單tearoff = False)#----------------創建子菜單的菜單項1-----------------self.file_menu.add_command(label = "打開",#設置子菜單項的名字command = self.file_handle_1#設置子菜單項需要執行的事件)self.file_menu.add_command(label = "保存",#設置菜單項的名字command = self.file_handle_2#設置子菜單項需要執行的事件)self.file_menu.add_separator()#添加子菜單項分割線self.file_menu.add_command(label = "關閉",#設置子菜單項的名字command = self.root.quit#設置子菜單項需要執行的事件)#關閉窗口的事件可以直接調用內置的函數#---------------------將子菜單添加到主菜單中----------------------self.menu.add_cascade(label = "文件",#為子菜單設置名字menu = self.file_menu#將子菜單添加到主菜單中,需要添加的子菜單)#---------------------------------# 創建一個子菜單2------------------------------self.edit_menu = tkinter.Menu(self.menu, #主菜單tearoff=False)#----------------創建子菜單的菜單項2-----------------self.edit_menu.add_command(label = "剪切",#設置子菜單項的名字command = self.edit_handle_1#設置子菜單項需要執行的事件)self.edit_menu.add_command(label = "復制",#設置菜單項的名字command = self.edit_handle_2#設置子菜單項需要執行的事件)self.edit_menu.add_separator()#添加子菜單項分割線self.edit_menu.add_command(label = "粘貼",#設置子菜單項的名字command = self.edit_handle_2#設置子菜單項需要執行的事件)#---------------------將子菜單添加到主菜單中----------------------self.menu.add_cascade(label = "編輯",#為子菜單設置名字menu = self.edit_menu#將子菜單添加到主菜單中,需要添加的子菜單)#---------------------主菜單的顯示------------------self.root.config(menu = self.menu)#-------創建彈出菜單:彈出菜單就相當于一個子菜單一樣,只不過是需要右擊才會出現的,對于窗體來說,彈出菜單相當于一個事件----------------------def pop_menu(self):self.popmenu = tkinter.Menu(self.root,tearoff = False)#創建菜單self.popmenu.add_command(label = "我是彈出菜單",#彈出菜單項的名字command = self.pop_handle_1#彈出菜單項綁定的事件)self.popmenu.add_command(label = "linlianqin",#彈出菜單項的名字command = self.pop_handle_2#彈出菜單項綁定的事件)#---------------------窗體菜單的處理事件------------------------def file_handle_1(self):passdef file_handle_2(self):passdef edit_handle_1(self):passdef edit_handle_2(self):pass#---------------------彈出菜單的處理事件------------------------def pop_handle_1(self):passdef pop_handle_2(self):pass#--------------彈出菜單事件---------------------def pop_menu_handle(self,event):self.popmenu.post(event.x_root,event.y_root)#設置彈出的位置,這是跟隨著事件發生的位置if __name__ == '__main__':Mainwindow()#將窗體類實例化
?