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):处理自定义事件,您可以在其中判断事件类型并执行相应操作。