一、效果图

二、示例代码
from PySide6.QtWidgets import *
from PySide6.QtCore import *
from PySide6.QtGui import *
import sys
class 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 = False
self.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 = True
self.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 = False
self.start_pos = self.end_pos
self.update()
if __name__ == '__main__':
app = QApplication(sys.argv)
d = Demo()
d.show()
app.exit(app.exec())