PySide6 之鼠标事件写字板

一、效果图

image

二、示例代码

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())

 

posted @ 2025-09-26 12:56  样子2018  阅读(7)  评论(0)    收藏  举报