日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

tkinter 菜单添加事件_tkinter学习教程(七)

發布時間:2025/3/12 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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關閉

圖7.6 ”撕下“菜單

關于菜單的內容就先介紹這么多,下一節我們來介紹各種對話框和消息框。

總結

以上是生活随笔為你收集整理的tkinter 菜单添加事件_tkinter学习教程(七)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。