当前位置:首页 » 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://wb98.com/post/328.html

    << 上一篇 下一篇 >>

    湘公网安备 43011102000514号 - 湘ICP备08100508号