當前位置:首頁 ? tkinter ? 正文

設置tkinter菜單的快捷鍵

現在我來講講菜單組件的快捷鍵,我們用過的的軟件,比如,記事本,有2種快捷方式,1是Alt快捷鍵,2是Ctrl+快捷鍵 。

 

Alt快捷鍵:

Alt快捷鍵就是先按Alt鍵,激活這種快捷方式,然后再按菜單上有下劃線的快捷字母,就會彈出相應菜單,再展開的相應菜單,再繼續擊鍵有下劃線的的字母,就可以啟動相應菜單項的綁定函數。

我們先來了解一下如何做出有下劃線的菜單以及菜單項。

我們就在上一篇文章說的代碼基礎上,來講解下劃線字母,雖然中文字符也可以做下劃線,但對于快捷鍵沒有什么意義,所以,我們要在以前代碼的基礎上,把菜單及菜單項都要加上:(字母)

注:括號里的字母,就是準備要加下劃線的字母

 

為某個字符加下劃線的參數為:underline

方法是:

add_cascade(……,underline=N)  # N代表第幾個字母要加下劃線

add_command(……,underline=N)  # N代表第幾個字母要加下劃線

……

注:計算N位置是從字符左邊算起,以0起步

 

下面的代碼,我已經在上篇文章的代碼基礎上為“文本”菜單,以及“新建”,“打開”,“保存”菜單項添加了下劃線參數,以及在label的文本里也加入了(快捷符字母)

from tkinter import *
 
root=Tk()
 
menubar=Menu(root) # 建立最頂層菜單欄
root.config(menu=menubar) # 設置窗體的菜單參數為最頂層菜單
 
A=Menu(menubar,tearoff=0)  # 在菜單欄menubar創建一個菜單A
menubar.add_cascade(label='文件(F)',menu=A,underline=3) # 在菜單欄menubar顯示文件菜單
 
A.add_command(label='新建(F)',underline=3,command=lambda:print('新建菜單項被調用')) # A菜單里創建新建菜單項
A.add_command(label='打開(O)',underline=3,command=lambda:print('打開菜單項被調用')) # A菜單里創建打開菜單項
A.add_command(label='保存(S)',underline=3,command=lambda:print('保存菜單項被調用')) # A菜單里創建保存菜單項
 
root.mainloop()

運行后,按鍵盤Alt鍵,再按F,O,S其中的一個鍵,就可以調用相應的菜單項功能。(Alt快捷字母,不分大小寫,Crtl+ 快捷鍵字母會區分大小寫)

13.PNG

其它菜單,菜單項都可以添加Alt快捷鍵,大寫舉一反三就知道如何做了。

注:Alt不要有相同的快捷字母。  丶丌皛

 

Ctrl+ 快捷鍵:

下面來講一下Ctrl+ 快捷鍵,所謂Ctrl+ 快捷鍵就是程序在按Ctrl時,再加上 的按鍵,就可以隨時調用某個菜單項的功能。例如,我們常用的記事本軟件,按Ctrl+ F 就可以調用搜索框。

Ctrl+ 快捷鍵是通過accelerator參數把快捷鍵顯示在菜單項的右邊,然后再通過窗體的bind方法來為一組鍵盤事件綁定一個函數。所以說,accelerator參數只是起一個顯示快捷鍵的作用,真正起快捷功能的代碼還是bind方法為鍵盤事件綁定的函數。

accelerator參數的使用方法是:

add_command (……,accelerator=accelerator='快捷鍵描述')

add_command (……,accelerator=accelerator='快捷鍵描述')

 

……

下面我再為“新建”,“打開”,“保存”三個菜單項再建立3個Ctrl+ 快捷鍵。

from tkinter import *
 
root=Tk() # 源碼來自wb98.com
 
menubar=Menu(root) # 建立最頂層菜單欄
root.config(menu=menubar) # 設置窗體的菜單參數為最頂層菜單
 
A=Menu(menubar,tearoff=0)  # 在菜單欄menubar創建一個菜單A
menubar.add_cascade(label='文件(F)',menu=A,underline=3) # 在菜單欄menubar顯示文件菜單
 
A.add_command(label='新建(F)',underline=3,
      command=lambda:print('新建菜單項被調用'),
      accelerator='Ctrl+N') # A菜單里創建新建菜單項
A.add_command(label='打開(O)',underline=3,
      command=lambda:print('打開菜單項被調用'),
      accelerator='Ctrl+O') # A菜單里創建打開菜單項
A.add_command(label='保存(S)',underline=3,
      command=lambda:print('保存菜單項被調用'),
      accelerator='Ctrl+S') # A菜單里創建保存菜單項
 
root.bind("<Control-N>",lambda event:print('bind新建項調用-N'))
root.bind("<Control-n>",lambda event:print('bind新建項調用-n'))
 
root.bind("<Control-O>",lambda event:print('bind打開項調用-O'))
root.bind("<Control-o>",lambda event:print('bind打開項調用-o'))
 
root.bind("<Control-S>",lambda event:print('bind保存項調用-S'))
root.bind("<Control-s>",lambda event:print('bind保存項調用-s'))
 
root.mainloop()


運行結果:

14.PNG

看代碼,大家會發現root.bind方法對于同個按鍵寫了2行代碼,只是大小寫字母的區別,這是由于python對大小寫字母有區分的,如果你想快捷鍵在大寫鎖定鍵的不同狀態下都可以使用,就為大小寫字母的快捷鍵綁定都寫一行代碼。

上面的代碼,由于我只是演示如何做快捷鍵,所以在bind方法綁定的函數我都用匿名函數來寫,大家也可以專門寫一個函數,以實現更多的功能。

 

菜單還要學的知識點還有很多,但其它的知識點平時用得不多,我們可以在需要用的時候再查相關資料再自學一下,相信也可以很快學會。


  下一篇文章就堤講一下如何用tkinter做一個不規則的窗體,就是你在別的編程語言看到的利用一個圖片生成一個異形窗體。。

  此文章來自:wb98.com  網站還有相關的系列課程文章,感興趣的可以前往。


來源:濟亨網

本文鏈接:http://www.chinaengraver.com/post/328.html

    << 上一篇 下一篇 >>

    湘公網安備 43011102000514號 - 湘ICP備08100508號

    2019年秋霞鲁丝片瓜皮_导航亚洲AV日韩AV永久无码_有没有哪些可以看片的免费的_国产色妞妞在线视频免费播放