PySide6 之鼠标事件写字板
一、效果图
二、示例代码
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())