PyQt5是一个Python的GUI工具包,它提供了丰富的图形界面控件,同时也支持鼠标事件。鼠标事件是指在鼠标与程序界面交互的过程中,程序对于鼠标的各种操作做出的响应。
PyQt5中提供了以下几种鼠标事件:
- mousePressEvent:鼠标按下事件
- mouseReleaseEvent:鼠标释放事件
- mouseMoveEvent:鼠标移动事件
- mouseDoubleClickEvent:鼠标双击事件
- wheelEvent:鼠标滚轮事件
下面我们来演示一下如何在PyQt5中使用鼠标事件。首先我们需要导入PyQt5库:
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5.QtGui import QPainter, QBrush, QPen
from PyQt5.QtCore import Qt
import sys
class MyWidget(QWidget):
def __init__(self):
super().__init__()
self.setFixedSize(400, 400)
self.setWindowTitle('Mouse Event')
def paintEvent(self, event):
painter = QPainter(self)
painter.setRenderHint(QPainter.Antialiasing)
brush = QBrush(Qt.SolidPattern)
painter.setBrush(brush)
pen = QPen(Qt.NoPen)
painter.setPen(pen)
painter.drawRect(100, 100, 200, 200)
def mousePressEvent(self, event):
print('Mouse pressed at ({}, {})'.format(event.x(), event.y()))
def mouseReleaseEvent(self, event):
print('Mouse released at ({}, {})'.format(event.x(), event.y()))
def mouseMoveEvent(self, event):
print('Mouse moved at ({}, {})'.format(event.x(), event.y()))
def mouseDoubleClickEvent(self, event):
print('Mouse double clicked at ({}, {})'.format(event.x(), event.y()))
def wheelEvent(self, event):
if event.angleDelta().y() > 0:
print('Mouse wheel up')
else:
print('Mouse wheel down')
这个自定义的QWidget类中重写了paintEvent方法,用于绘制一个矩形。同时也重写了鼠标事件的几个方法,用于打印出鼠标的各种事件。
最后我们在主函数中创建一个应用并运行:
if __name__ == '__main__':
app = QApplication(sys.argv)
w = MyWidget()
w.show()
sys.exit(app.exec_())
运行程序后,我们就可以在界面上看到一个矩形。当我们对这个矩形进行鼠标操作时,控制台中就会打印出相应的事件信息。