一、效果图
二、示例代码
from PySide6.QtWidgets import * from PySide6.QtCore import * from PySide6.QtGui import * import sysclass ImageWidget(QWidget):pass'''鼠标控制图片缩放、拖动,鼠标滚动放大、缩小''' class Demo(QWidget):point_color = [Qt.GlobalColor.red, Qt.GlobalColor.yellow, Qt.GlobalColor.green, Qt.GlobalColor.blue, Qt.GlobalColor.darkCyan]def __init__(self):super().__init__()self.resize(400, 300)self.setWindowTitle('鼠标事件')# 图片是否拖动self.drag = Falseself.start_pos = QPoint()self.end_pos = QPoint()self.pix_map = QPixmap(self.width(), self.width())# 设置背景颜色self.pix_map.fill("#ccc")'''绘制点'''def paintEvent(self, event):p = QPainter(self.pix_map)_rand = QRandomGenerator.global_().bounded(len(self.point_color))p.setPen(self.point_color[_rand])p.drawLine(self.start_pos, self.end_pos)self.start_pos = self.end_pos#在画布上画出paint = QPainter(self)paint.drawPixmap(0, 0, self.pix_map)'''鼠标被按下'''def mousePressEvent(self, event):if event.button() == Qt.MouseButton.LeftButton:# 左键被按下print('左键被按下')self.drag = Trueself.start_pos = event.pos()'''鼠标拖动事件'''def mouseMoveEvent(self, event):print('鼠标拖动事件', event.pos())if self.drag:self.end_pos = event.pos()self.update()'''鼠标抬起'''def mouseReleaseEvent(self, event):if event.button() == Qt.MouseButton.LeftButton:self.drag = Falseself.start_pos = self.end_posself.update()if __name__ == '__main__':app = QApplication(sys.argv)d = Demo()d.show()app.exit(app.exec())