pyqt5画直线时如何实现鼠标移动实时动态显示直线,但只有松开鼠标才进行绘制?
最近刚开始学习pyqt5的绘图功能,但不知道该怎么实现绘制中随鼠标移动动态显示直线,但是只有当鼠标松开时才进行绘制,加入鼠标移动时间进行刷新又会造成大量重影,鼠标移动时间去掉刷新命令又会造成绘制过程无图松开鼠标突然出现图像。另外还有这个双缓冲技术好像也并不能解决问题。简单来说,就是如何在pyqt5画线时实现MFC中橡皮筋的功能。
目前写的具体代码如下,希望各位前辈们帮忙解答一下。
目前写的具体代码如下,希望各位前辈们帮忙解答一下。
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
class PaintBoard(QWidget):
def __init__(self, parent=None):
super(PaintBoard, self).__init__(parent)
self.initData()
self.initView()
def initData(self):
self.size = QSize(600, 900)
self.board = QPixmap(self.size)
self.board.fill(Qt.white) # 画板填充为白色
self.IsEmpty = True # 初始默认为空画板
self.lastPoint = QPoint(0, 0)
self.endPoint = QPoint(0, 0)
# 辅助画布
self.tempBoard = QPixmap()
self.isDrawing = False # 标志是否正在绘图
def initView(self):
pass
def paintEvent(self, event):
painter = QPainter(self)
x = self.lastPoint.x()
y = self.lastPoint.y()
w = self.endPoint.x() - x
h = self.endPoint.y() - y
if self.isDrawing:
self.tempBoard = self.board
pen = QPainter(self.tempBoard)
pen.drawRect(x, y, w, h)
painter.drawPixmap(0, 0, self.tempBoard)
else:
pen = QPainter(self.board)
pen.drawRect(x, y, w, h)
painter.drawPixmap(0, 0, self.board)
def mousePressEvent(self, event):
# 按下鼠标左键
if event.button() == Qt.LeftButton:
self.lastPoint = event.pos()
self.endPoint = self.lastPoint
self.isDrawing = True
def mouseReleaseEvent(self, event):
# 释放鼠标左键
if event.button() == Qt.LeftButton:
self.endPoint = event.pos()
# 重新绘制
self.update()
self.isDrawing = False
def mouseMoveEvent(self, event):
if event.buttons() and Qt.LeftButton:
self.endPoint = event.pos()
self.update()
...全文
相关推荐
Pyqt5 Qpainter绘制基础图形.doc
(self, e)`* 鼠标释放事件:`mouseReleaseEvent(self, e)`* 鼠标移动事件:`mouseMoveEvent(self, e)`五、鼠标拖画鼠标拖画是 PyQt5 中的一个重要功能
画板示例程序(PYQT5,用标签控件作画板实现画直线,矩形,文本等)
本篇将介绍一个基于PyQt5开发的简易画板程序,该程序具有画直线、矩形、填充矩形、圆形和文本等基础功能,适用于想要学习绘图类型和GUI编程的初学者。
python GUI库图形界面开发之PyQt5简单绘图板实例与代码分析
总的来说,这个实例展示了如何利用PyQt5的QPixmap和QPainter类来创建一个基本的绘图板应用。用户可以通过鼠标左键在窗口上绘制线条,实现简单的涂鸦功能。
PyQt5之QGraphics 011 QGraphicsItem之绘画OpenCV contours
综上所述,这个示例展示了如何将OpenCV的图像处理能力与PyQt5的图形界面结合,实现轮廓的可视化。
基于Python PyQt5实现的仿Windows画图工具源码
PyQt5通过信号和槽机制来处理用户事件,例如点击按钮、移动鼠标、按下键盘等。7. **文件操作**:为了保存和加载用户的绘图,需要实现文件的读写功能。


