为了账号安全,请及时绑定邮箱和手机立即绑定

使用pyqt5逐步绘制的正确方法

使用pyqt5逐步绘制的正确方法

哆啦的时光机 2021-09-14 21:21:10
我有一个基本上是一个圆圈的小部件。我想逐步绘制它,所以我需要逐步绘制它(imo)。使用以下代码,我已经实现了我想要的。然而,有一个问题。我正在向函数传递一个新事件paintEvent,因为如果我不这样做,图像在一切完成之前不会更新,所以我什么都没有实现。小部件代码import sysimport timefrom PyQt5.QtCore import Qt, QRectfrom PyQt5.QtWidgets import QApplication, QWidget, QCheckBox, QDesktopWidgetfrom PyQt5.QtGui import QPen, QPainter, QPaintEvent, QConicalGradient, QColor, QBrushclass Circle(QWidget):    def __init__(self, size, color):        super().__init__()        self.loadingAngle = 0        self.width = 0        self.color = color        self.pixmap_opacity = 1        self.resize(size, size);        self.center()        self.initUI()    def initUI(self):        self.width = 15        self.loadingAngle = 0        self.show()    def center(self):        qr = self.frameGeometry()        cp = QDesktopWidget().availableGeometry().center()        qr.moveCenter(cp)        self.move(qr.topLeft())    def paintEvent(self, qevent):        self.setWindowFlags(Qt.FramelessWindowHint)        self.setAttribute(Qt.WA_TranslucentBackground)        self.setStyleSheet("background:transparent;")        drawingRect = QRect()        drawingRect.setX(qevent.rect().x() + self.width)        drawingRect.setY(qevent.rect().y() + self.width)        drawingRect.setWidth(qevent.rect().width() - self.width * 2)        drawingRect.setHeight(qevent.rect().height() - self.width * 2)        painter = QPainter(self)        painter.setRenderHint(QPainter.Antialiasing)有问题的线路self.paintEvent(QPaintEvent())这条线产生了几个错误,但即使有这些错误,我也会做我想做的。如果我将qevent函数本身的传递给这个新调用,图像不会像我之前所说的那样更新。如果我创建这个 new QPaintEvent,它确实有效。但是,错误是:回溯(最近一次调用最后一次):文件“/home/btc/Escritorio/SinestesiaRCB/Classes/Widget.py”,第68行,在paintEvent self.paintEvent(QPaintEvent())中类型错误:参数与任何重载调用不匹配:QPaintEvent(QRegion):参数不足QPaintEvent(QRect):没有足够的参数QPaintEvent(QPaintEvent):没有足够的参数QBackingStore::endPaint() 在 backingstore 绘制设备上使用活动绘制器调用这些错误可能来自其他行,例如:qevent.rect().x()由于新事件是空事件。所以基本上我的问题是,我应该怎么做才能正确地做到这一点,这意味着没有错误地实现我想要的?
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 203 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号