我有一個(gè)基本上是一個(gè)圓圈的小部件。我想逐步繪制它,所以我需要逐步繪制它(imo)。使用以下代碼,我已經(jīng)實(shí)現(xiàn)了我想要的。然而,有一個(gè)問(wèn)題。我正在向函數(shù)傳遞一個(gè)新事件paintEvent,因?yàn)槿绻也贿@樣做,圖像在一切完成之前不會(huì)更新,所以我什么都沒(méi)有實(shí)現(xiàn)。小部件代碼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)有問(wèn)題的線路self.paintEvent(QPaintEvent())這條線產(chǎn)生了幾個(gè)錯(cuò)誤,但即使有這些錯(cuò)誤,我也會(huì)做我想做的。如果我將qevent函數(shù)本身的傳遞給這個(gè)新調(diào)用,圖像不會(huì)像我之前所說(shuō)的那樣更新。如果我創(chuàng)建這個(gè) new QPaintEvent,它確實(shí)有效。但是,錯(cuò)誤是:回溯(最近一次調(diào)用最后一次):文件“/home/btc/Escritorio/SinestesiaRCB/Classes/Widget.py”,第68行,在paintEvent self.paintEvent(QPaintEvent())中類型錯(cuò)誤:參數(shù)與任何重載調(diào)用不匹配:QPaintEvent(QRegion):參數(shù)不足QPaintEvent(QRect):沒(méi)有足夠的參數(shù)QPaintEvent(QPaintEvent):沒(méi)有足夠的參數(shù)QBackingStore::endPaint() 在 backingstore 繪制設(shè)備上使用活動(dòng)繪制器調(diào)用這些錯(cuò)誤可能來(lái)自其他行,例如:qevent.rect().x()由于新事件是空事件。所以基本上我的問(wèn)題是,我應(yīng)該怎么做才能正確地做到這一點(diǎn),這意味著沒(méi)有錯(cuò)誤地實(shí)現(xiàn)我想要的?
使用pyqt5逐步繪制的正確方法
哆啦的時(shí)光機(jī)
2021-09-14 21:21:10