PySide6 QKeyEvent:键盘事件类

QKeyEventPySide6中用于表示键盘事件的类,用于处理与键盘相关的用户输入事件,如按键、释放等;

示例代码

当Ctrl、Alt以及普通按键被按下时,这段示例代码将打印出按下的键:

import sys
from PySide6.QtWidgets import QApplication, QWidget, QStyleFactory
from PySide6.QtGui import QKeyEvent, Qt

class MainWidget(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.resize(300, 200)
        self.setWindowTitle("QKeyEvent类")

    def keyPressEvent(self,event:QKeyEvent):
        ctrl_pressed = event.modifiers() & Qt.ControlModifier
        alt_pressed = event.modifiers() & Qt.AltModifier

        if ctrl_pressed:
            print("ctrl ",end='')
        if alt_pressed:
            print("alt ",end='')

        print(event.text())

if __name__ == '__main__':
    app = QApplication(sys.argv)
    app.setStyle(QStyleFactory.create("Fusion"))
    window = MainWidget()
    window.show()
    sys.exit(app.exec())

常用属性与方法

  • key():获取键盘事件的键码,返回一个整数,代表按下或释放的键的键码。可以通过将key()的返回值与Qt中的预定义常量对比,来判断按下了哪些键;
    if event.key() == Qt.Key_F1: # F1
        pass
    if event.key() == Qt.Key_Delete: # delete
        pass
  • text():获取键盘事件的键的文本表示,返回一个字符串,表示按下的键的文本。
  • modifiers():获取修饰键(如 Shift、Ctrl、Alt等)的状态,返回一个整数,代表修饰键的状态。

    修饰键的状态通常是通过使用位运算来判断,因为修饰键可能同时被按下,因此我们需要将修饰键的状态表示为一个二进制值,其中每个修饰键都对应一个特定的位;

    判断修饰键是否被按下的方法:

    ctrl_pressed = event.modifiers() & Qt.ControlModifier
    alt_pressed = event.modifiers() & Qt.AltModifier
  • isAutoRepeat():检查事件是否是由键盘的自动重复机制触发的,返回一个布尔值。

    自动重复是指当用户长时间按住一个键不放时,键盘会自动产生重复的按键事件;通过调用isAutoRepeat()方法可以判断事件是否由自动重复触发;

  • count():获取连续按键的数量,返回一个整数,表示连续按键的数量。

预定义常量

Qt中预定了一些常量,表示按键的键码,使用前先导入:

from PySide6.QtGui import Qt

以下是一些常见的键盘按键常量:

功能键:

  • Qt.Key_F1Qt.Key_F2、...、Qt.Key_F24:F1 到 F24 功能键
  • Qt.Key_Escape:Esc 键
  • Qt.Key_ReturnQt.Key_Enter:回车键
  • Qt.Key_Tab:Tab 键
  • Qt.Key_Backspace:退格键
  • Qt.Key_Delete:删除键
  • Qt.Key_Space:空格键

字母和数字键:

  • Qt.Key_AQt.Key_Z:字母 A 到 Z
  • Qt.Key_0Qt.Key_9:数字键 0 到 9

方向键:

  • Qt.Key_Up:上
  • Qt.Key_Down:下
  • Qt.Key_Left:左
  • Qt.Key_Right:右

修饰键:

  • Qt.Key_Shift:Shift 键
  • Qt.Key_Control:Ctrl 键
  • Qt.Key_Alt:Alt 键
  • Qt.Key_Meta:Meta 键(通常是 Windows 或 Command 键)

其它特殊键:

  • Qt.Key_PageUpQt.Key_PageDown:页面上、下翻页键
  • Qt.Key_HomeQt.Key_End:Home、End 键
  • Qt.Key_Insert:插入键
  • Qt.Key_CapsLock:大写锁定键
  • Qt.Key_NumLock:数字锁定键
  • Qt.Key_ScrollLock:滚动锁定键

原创内容,如需转载,请注明出处;

本文地址: https://www.perfcode.com/pyside6-events/qkeyevent.html

分类: 计算机技术
推荐阅读:
MIPS汇编语言教程 MIPS(Microprocessor without Interlocked Pipeline Stages)是一种基于RISC(Reduced Instruction Set Computer,精简指令集计算机)体系结构的微处理器架构。MIPS的设计理念是简化指令集,减少指令执行时间和硬件开销,提高处理器性能和效率。
Python int()函数 在Python中,int()函数用于将一个数值或字符串转换为整数。如果提供了一个字符串作为参数,那么int()函数将尝试将该字符串解释为一个整数,并返回对应的整数值。如果字符串无法解释为整数,则会引发ValueError异常。
xxxx is not in the sudoers file. This incident will be reported. 解决方法 使用sudo命令时出现xxxx is not in the sudoers file. This incident will be reported. 这里的xxxx是你的用户名;出现这个提示通常是用户名没有写入到sudoers文件中;
Rust获取命令行参数 所谓的命令行参数,是指程序在命令行或SHELL上运行时后跟的参数;Rust语言中获取命令行参数的方法如下:
C语言strcpy()函数:复制字符串 strcpy()函数会将源字符串中的内容复制到目标字符串中,直至遇到字符串终止符'\0';复制过程中,包括字符串终止符'\0'在内的所有字符都会被复制;
Python filter()函数 在Python中,filter()是一个内置函数,它有两个参数:一个函数和一个可迭代对象(比如列表、元组或集合)。它会对可迭代对象中的每个元素调用给定的函数,并返回一个新的可迭代对象,其中只包含符合条件的元素。