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

分类: 计算机技术
推荐阅读:
Linux终端给命令设置超时 在Linux系统下,有这么个场景,当你运行一条命令,你希望它在指定时间后,如果它还在运行,就自动结束它,那你可以通过这一条命令实现:
Rust debug_assert_eq宏的用法和示例 在Rust语言中,debug_assert_eq宏专门用于进行调试时的值相等性检查。它类似于assert_eq宏,但有一个重要的区别:debug_assert_eq只能在Rust的debug模式下进行检查,这意味着在发布应用程序时,所有的debug_assert_eq检查都会被编译器完全移除,不会影响最终的执行代码。
Python tuple()函数 tuple() 函数用于将一个可迭代对象转换为元组,其语法如下:
Windows和Linux系统启用IP转发 在Windows系统下启用IP转发,需要通过修改注册表来实现;Linux系统只需将系统下的/proc/sys/net/ipv4/ip_forward文件值修改为1;
Python实现线性搜索(linear search) 线性搜索(linear search)通过从第一个元素开始遍历,与列表中的每个元素进行比较,直到匹配到元素或全部匹配完毕为止;
Golang和Go的区别 Golang就是Go,Go就是Golang;Golang全称是Go language。