PySide6 事件详细教程

在PySide6中,事件是GUI应用程序中用户交互和其它系统事件的基本构成块;PySide6中的事件允许您捕获和处理各种类型的事件,从而实现对用户界面的交互和响应;

事件类

PySide6提供了许多不同类型的事件类,以下是一些常见的PySide6事件类,用于处理各种情况:

  • QMouseEvent:鼠标事件类,用于处理与鼠标交互相关的事件,如鼠标的点击、移动等;
  • QKeyEvent:键盘事件类,用于处理键盘按键事件,如按下、释放等;
  • QFocusEvent:焦点事件类,用于处理组件获得或失去焦点的事件;
  • QResizeEvent:窗口大小调整事件类,用于处理窗口大小
  • QMoveEvent
  • QPaintEvent
  • QDragEnterEvent
  • QDragMoveEvent
  • QDropEvent
  • QTimerEvent
  • 自定义事件类:
  • 其它事件

事件处理方法

在PySide6中,您可以通过重写特定事件处理方法来响应不同类型的事件。每个事件类(如QKeyEvent)都对应着一些特定的方法,你可以在您自定义类中重写这些方法来处理相应类型的事件;

下面是一个重写QWidget类keyPressEvent方法的简单例子:

import sys
from PySide6.QtWidgets import (QApplication, QWidget, QStyleFactory,
         QLabel)
from PySide6.QtGui import QKeyEvent

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

    def initUI(self):
        self.resize(300, 200)
        self.setWindowTitle("重写keyPressEvent事件")
        self.label = QLabel("Press a key",self)
        self.label.move(50,50)

    def keyPressEvent(self,event:QKeyEvent):
        self.label.setText(f"你按下了 {event.text()}")

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

当有键盘按键按下时,self.keyPressEvent(event)方法会被调用,参数event是相应事件类的实例,这里是QKeyEvent类的实例;

除了可以重写事件处理函数外,还可以通过重定向来实现:

    self.keyPressEvent = self.other_method

def other_method(self,event):
    pass

以下是一些常见事件对应的方法:

  • mousePressEvent(event):处理鼠标按下事件;
  • mouseReleaseEvent(event):处理鼠标释放事件;
  • mouseMoveEvent(event):处理鼠标移动事件;
  • mouseDoubleClickEvent(event):处理鼠标双击事件。
  • keyPressEvent(event):处理键盘按键按下事件。
  • keyReleaseEvent(event):处理键盘按键释放事件
  • focusInEvent(event):处理组件获得焦点事件
  • focusOutEvent(event):处理组件失去焦点事件。
  • resizeEvent(event):处理窗口大小调整事件。
  • moveEvent(event):处理窗口移动事件。
  • paintEvent(event):处理绘图事件,用于自定义绘制。
  • timerEvent(event):处理定时器事件。
  • dragEnterEvent(event):处理拖放进入事件。
  • dragMoveEvent(event):处理拖放移动事件。
  • event(event):处理自定义事件,您可以在其中判断事件类型并执行相应操作。

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

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

分类: 计算机技术
推荐阅读:
Python 使用tld库获取复杂URL的顶级域名 我们会碰到各种各样的URL链接,比如:www.a.com/ b.com.cn/ a.b.c.com.cn a.com/b.com Python有内置的库可以识别一些简单的URL,但是像a.b.c.com.cn这样却无能为力。我们需要一个强大的第三方库来实现提取顶级域名。
Golang捕获Ctrl+C的系统信号并作出响应 通常,当操作系统要停止你的进程时,会向你的进程发送信号,如果你需要在进程结束前处理一些事务,那么你需要捕获这些信号;
如何解压和压缩 .tar.gz 文件 .tar.gz 为后缀的文件是一种在Linux和macOS下常见的压缩文件,可直接使用tar命令进行解压或压缩;
Python字符串split()方法 在使用Python处理字符串时,你可能需要将字符串拆分为若干个子字符串;Python中的字符串方法split()可以帮助你完成这个任务。
Golang和Go的区别 Golang就是Go,Go就是Golang;Golang全称是Go language。
从PyInstaller打包生成的EXE文件中提取Python源码 本文将详细讲解怎么使用 pyi-archive_viewer 和 uncompyle6 工具提取pyinstaller打包生成的EXE中的pyc文件,并将其正确的解码成py源码。