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

分类: 计算机技术
推荐阅读:
gcc编译错误undefined reference to `std::cout'解决方法 在对C++项目进行编译时,出现undefined reference to `std::cout'编译错误,解决方法如下;使用gcc编译器编译时,添加 -lstdc++ 编译选项;
Implementation of the USB 2.0 controller not found!解决方案 你可能在使用VirtualBox启动虚拟机系统时碰到“不能为虚拟电脑打开一个新的任务”的错误提示,并提示 Implementation of the USB 2.0 controller not found!
Rust获取命令行参数 所谓的命令行参数,是指程序在命令行或SHELL上运行时后跟的参数;Rust语言中获取命令行参数的方法如下:
Golang中 import cycle not allowed 的解决方法 在Go语言中,在使用import导入相应的包时,你可能会碰到 import cycle not allowed 这样的问题,出现这样的问题是你的包没有规划好,导致包相互依赖;
提示Permission denied的解决方法 通常,提示Permission denied表示你的某个操作权限不够;在Linux系统中,权限分为读权限、写权限和可执行权限,当你所在的用户组没有相关权限时,则会提示Permission denied;
requests发送HTTP请求后返回的响应头 requests 返回的Response对象包含响应头属性 headers: