我是PyQt5的新手,试图研究它的工作原理。我创建了一个窗口,在其上放置一个按钮,将click事件连接到相应的方法。代码很简单-按下按钮时,计数器会增加,新值需要显示在窗口中央。但是,如果我使用self.update()(在某些来源中建议这样做),则仅在调整大小或移动窗口时才刷新窗口,而不是在按下按钮后立即刷新窗口。如果我使用self.repaint(),一切都会很好。您能否解释一下这些方法之间的区别,以及为什么其中一种方法如此奇怪?
class App(QWidget):
def __init__(self):
super().__init__()
self.title = 'First Try'
self.value = 1
self.startButton = QPushButton('Start', self)
self.startButton.clicked.connect(self.startPressed)
self.initUI()
def initUI(self):
self.setWindowTitle(self.title)
self.setGeometry(10, 10, 640, 480)
hbox = QHBoxLayout()
hbox.addWidget(self.startButton)
vbox = QVBoxLayout()
vbox.addStretch(1)
vbox.addLayout(hbox)
self.setLayout(vbox)
self.show()
def paintEvent(self, event):
qp = QPainter()
qp.begin(self)
qp.setPen(QColor(168, 34, 3))
qp.setFont(QFont('Decorative', 30))
qp.drawText(self.rect(), Qt.AlignCenter, str(self.value))
qp.end()
def startPressed(self):
self.value += 1
self.update()