我有一个基本上是一个圆圈的小部件。我想逐步绘制它,所以我需要逐步绘制它(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()由于新事件是空事件。所以基本上我的问题是,我应该怎么做才能正确地做到这一点,这意味着没有错误地实现我想要的?
添加回答
举报
0/150
提交
取消