编程语言及工具
键盘事件
QT本身自带的输入事件,开发者常用主要是鼠标跟键盘事件 前面文章中已经介绍了鼠标事件,而且通过鼠标事件响应处理实现了不同几何图形的绘制。PyQT5中键盘事件响应主要通过重载下面两个方法实现
keyPressEvent() keyReleaseEvent()如果在多个界面之间切换一定要调用一下:
grabKeyboard() releaseKeyboard()第一行放在构造函数中,第二行放在切换界面之前,这点对EditLine等文本输入框特别重要,一定要有!不然界面切换之后你就会发现无法响应键盘输入了,因为默认还是上个界面。
代码演示部分
这里讲介绍键盘响应事件,我们分别给之前的图像浏览器加上键盘快捷键响应支持,实现通过键盘上箭头按键完成到上一张或者下一张图像切换浏览。运行结果如下:
代码实现如下:
1def keyPressEvent(self, event): 2 print("key press response", event.key()) 3 if event.key() == QtCore.Qt.Key_PageUp: 4 self.on_back_image_view() 5 6 if event.key() == QtCore.Qt.Key_PageDown: 7 self.on_forward_image_view() 8 9def keyReleaseEvent(self, event): 10 print("key release response", event.key()) 11 if event.key() == QtCore.Qt.Key_Left: 12 self.on_back_image_view() 13 14 if event.key() == QtCore.Qt.Key_Right: 15 self.on_forward_image_view()上面的代码运行时你会发现,键盘上上下左右四个按键还有部分功能按键都无法正确响应,有的压根就不调用两个重载的键盘事件方法,这个是PyQT5中的大坑,一定要注意,必须把重载的方法声明为下面的格式与实现:
1def keyPressEvent(self, a0: QtGui.QKeyEvent): 2 print("key press response", a0.key()) 3 if a0.key() == QtCore.Qt.Key_PageUp: 4 self.on_back_image_view() 5 6 if a0.key() == QtCore.Qt.Key_PageDown: 7 self.on_forward_image_view() 8 9def keyReleaseEvent(self, a0: QtGui.QKeyEvent): 10 print("key release response", a0.key()) 11 if a0.key() == QtCore.Qt.Key_Left: 12 self.on_back_image_view() 13 14 if a0.key() == QtCore.Qt.Key_Right: 15 self.on_forward_image_view()这时候你会发现一切正常响应了。运行结果如下图:
编辑:黄飞
全部0条评论
快来发表一下你的评论吧 !