五笔打字通主页
现在我来讲讲菜单组件的快捷键,我们用过的的软件,比如,记事本,有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+ 快捷键字母会区分大小写)
其它菜单,菜单项都可以添加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()
运行结果:
看代码,大家会发现root.bind方法对于同个按键写了2行代码,只是大小写字母的区别,这是由于python对大小写字母有区分的,如果你想快捷键在大写锁定键的不同状态下都可以使用,就为大小写字母的快捷键绑定都写一行代码。
上面的代码,由于我只是演示如何做快捷键,所以在bind方法绑定的函数我都用匿名函数来写,大家也可以专门写一个函数,以实现更多的功能。
菜单还要学的知识点还有很多,但其它的知识点平时用得不多,我们可以在需要用的时候再查相关资料再自学一下,相信也可以很快学会。
下一篇文章就堤讲一下如何用tkinter做一个不规则的窗体,就是你在别的编程语言看到的利用一个图片生成一个异形窗体。。
此文章来自:wb98.com 网站还有相关的系列课程文章,感兴趣的可以前往。
来源:济亨网
本文链接:http://wb86.com/post/328.html