当前位置: 首页 > 工具软件 > pushbutton > 使用案例 >

PyQt5 实现pushButton按钮和键盘的enter键绑定

葛志国
2023-12-01

我的需求:

首先,我做了一个登陆界面,输入密码后点击屏幕上"登录"按钮就可以实现界面跳转,但是一开始触发事件只能使用鼠标点击屏幕上的按钮才能触发这个按钮,我想到习惯性的登录动作是先用键盘输入密码,然后直接潇洒的重击一下回车键,又解压又有效!!!

我的解决思路:

要给这个"登录"的pushButton绑定键盘事件,首先想到的是利用setShortcut属性给pushButton设置一个快捷键,但是几经尝试发现setShortcut设置的快捷键好像都是Alt+某个字母这种,我总不能设置成Alt+enter,而且好像也不存在这种快捷键,所以这条路走不通.

结合我的一点前端知识,enter键应该是属于特殊键,肯定是有特殊的绑定方式,我就在CSDN搜一些方法,第一个看到的是这一篇方法不太行的文章,我把代码稍作修改加到我的代码中,但无法实现理想的功能,我以为方法没问题,就在这个监听函数里加了一个print,但是也无法输出,说明监听本身就有问题了!!!然后我接着找,又找到了一篇方法非常符合我需求的文章,监听函数的结构和前面那个类似,只是部分属性稍有不同,一试,达到了理想的功能.

总结:

先摆一下两份代码:

def keyPressEvent(self, event):
    if event.key() == QtCore.Qt.Key_Enter:
        self.slotLogin()
def keyPressEvent(self, QKeyEvent):
    if QKeyEvent.key() == Qt.Key_Return:
         print('Space')

在第二篇文章中作者说:大键盘上的键是Qt.Key_Return,小键盘上的Enter才是Qt.Key_Enter.

然后我就尝试了,第一份代码可以用外设全键键盘最右边数字键盘的enter响应,但是笔记本的enter键和外设全键键盘中间的大enter键都不能响应.第二份代码可以用笔记本的enter键和外设全键键盘中间的大enter键都可以响应,这也就是作者说的大,小键盘的enter键不同之处了.

 类似资料: