tkinter 菜单添加事件_tkinter学习教程(七)
7.菜單欄
任何GUI都少不了菜單,tkinter當然也有自己的菜單欄。tkinter使用Menu類創建一個菜單,并用add_command方法來添加菜單項。
下面讓我們來創建頂層菜單:
from tkinter import *root = Tk() menubar = Menu(root) for i in ['文件','視圖','編輯','關于']:menubar.add_command(label=i) #這一步不可或缺,菜單實例要應用到窗口中 root['menu']=menubar root.mainloop()圖7.1 頂層菜單add_command有下面幾個屬性:
- label:指定菜單的名稱
- command:被點擊時調用的方法
- acceletor:快捷鍵
- underline:是否擁有下劃線
通常,頂層菜單是應用到窗口的父組件,要想繼續創建子菜單,需要同時用到add_command和add_cascade方法。例如:
from tkinter import *root = Tk() menubar = Menu(root) #創建子菜單 fmenu = Menu(menubar) for i in ['新建','打開','保存','另存為']:fmenu.add_command(label=i) #為頂級菜單實例添加菜單,并級聯相應的子菜單實例 menubar.add_cascade(label='文件',menu=fmenu) menubar.add_cascade(label='視圖') #這里省略了menu屬性,沒有將后面三個選項與子菜單級聯 menubar.add_cascade(label='編輯') menubar.add_cascade(label='關于')root['menu']=menubar root.mainloop()圖7.2 子菜單由此可見,我們需要通過add_cascade方法級聯子菜單和頂層菜單。在子菜單存在時,也不需要利用for循環先創建好頂層菜單的每個選項,與子菜單一一對應即可。(代碼中省略了后面三個選項的級聯,只是顯示了菜單的選項名稱。)
用add_separator()方法可以添加分割線,調用的時候很簡單,需要在哪添加,就把這行代碼放在那個地方:
from tkinter import *root = Tk() menubar = Menu(root) fmenu = Menu(menubar) for i in ['新建','打開','保存','另存為']:fmenu.add_command(label=i)fmenu.add_separator() fmenu.add_command(label='分割線')menubar.add_cascade(label='文件',menu=fmenu) menubar.add_cascade(label='視圖') menubar.add_cascade(label='編輯') menubar.add_cascade(label='關于') root['menu']=menubar root.mainloop()圖7.3 分割線除了默認的點擊后無顯示的效果,Menu還可以設置單選框(add_radiobutton)與復選框(add_checkbutton),只需對應地替換掉add_command,例如復選框的實現:
from tkinter import *root = Tk() menubar = Menu(root) fmenu = Menu(menubar) for i in ['新建','打開','保存','另存為']:fmenu.add_checkbutton(label=i) menubar.add_cascade(label='文件',menu=fmenu) menubar.add_cascade(label='視圖') menubar.add_cascade(label='編輯') menubar.add_cascade(label='關于') root['menu']=menubar root.mainloop()圖7.4 復選框除了最基本的窗口菜單,tkinter還可以實現彈出菜單。由于通常用右鍵觸發,因此也叫右鍵菜單。不過這并不是一個獨立的實現方法,而是將Menu類與鼠標事件結合,創建好菜單后,使用post方法在指定位置彈出已創建的菜單:
from tkinter import *#菜單彈出事件 def pop(event):menubar.post(event.x_root, event.y_root)root = Tk() menubar = Menu(root) for i in ['c','java','python','php']:menubar.add_command(label=i) root.bind("<Button-3>",pop) root.mainloop()圖7.5 彈出菜單比較遺憾的是,tkinter的菜單欄只有默認的樣式,但Menu和其他組件一樣,可以通過一些通用屬性來改變字體、顏色等等,不過也僅此而已了。
看了上面那么多的演示圖,你有沒有想過子菜單的長虛線有什么作用呢?這里我要介紹一個Menu特有的屬性:
- tearoff 點擊子菜單中的 ---------,可以將其“撕下“,默認為True,設為False關閉
關于菜單的內容就先介紹這么多,下一節我們來介紹各種對話框和消息框。
總結
以上是生活随笔為你收集整理的tkinter 菜单添加事件_tkinter学习教程(七)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 视频图像处理平台对比_情绪管理考勤机人脸
- 下一篇: python使用xlrd读取xlsx文件