2

PyQt5系列教程(二十九)键盘事件

 1 year ago
source link: https://xugaoxiang.com/2022/05/31/pyqt5-29-keyboard-event/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

软硬件环境

  • Windows 10 64bit
  • Anaconda3 with python 3.8
  • PyQt5 5.15

前一节,我们介绍了鼠标事件,本节,介绍键盘事件,它也是 GUI 操作的重要手段,如常见的 F1 键显示帮助、ctrl+c 复制、ctrl+v 粘贴等。

键盘按下弹起

键盘按键的按下和弹起对应的事件是 keyPressEventkeyReleaseEvent,如果需要在事件发生后进行相应的逻辑处理,在窗口中只需要重写这两个方法即可。

def keyPressEvent(self, event):
    # 判断按下的是什么键
    if event.key() == Qt.Key_D:
        print('keyPressEvent, Key_D')

        # ctrl 修饰键
        if event.modifiers() & Qt.ControlModifier:
            print('Ctrl+D')
        # alt 修饰键    
        elif event.modifiers() & Qt.AltModifier:
            print('Alt+D')
        # shift 修饰键
        elif event.modifiers() & Qt.ShiftModifier:
            print('Shift+D')

def keyReleaseEvent(self, event):
    print('keyReleaseEvent')

快捷键设置

这里,我们给界面中的按钮设置一个快捷键,对应的操作是点击

self.pushButton.clicked.connect(self.onClick)
# 给按钮操作设置一个快捷键A
self.pushButton.setShortcut(QKeySequence(Qt.Key_A))

# 或者这样
# self.shortcut_button = QShortcut(QKeySequence('Ctrl+S'), self)
# self.shortcut_button.activated.connect(self.onClick)

这样,当焦点在界面范围内,按下字母 A 键,就相当于点击了界面上的按钮

https://github.com/xugaoxiang/learningPyQt5

PyQt5系列教程

更多PyQt5教程,请移步

https://xugaoxiang.com/category/python/pyqt5/


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK