强制重绘不会重绘PyQt5小部件(Qlabel、QTextEdit,甚至QProgressBar等)
测试平台:Linux、Mac操作系统
PyQt5版本:5.15.7
从管道安装
例如,我创建了一个简单的应用程序,在for
循环中更新QLabel小部件中的文本。
import sys
from time import sleep
from PyQt5.QtWidgets import (QWidget, QApplication, QPushButton, QLabel)
class Example(QWidget):
def __init__(self):
super().__init__()
self.text = QLabel('Test', self)
self.text.move(10, 10)
self.text.resize(60,20)
self.button = QPushButton('Run', self)
self.button.move(17,40)
self.button.clicked.connect(self.some_activity)
self.setGeometry(300, 300, 100, 80)
self.show()
def some_activity(self):
for i in range(100):
text = f'i = {i}'
self.text.setText(text)
# self.text.update() -> Nothing happens (it shouldnt: https://doc.qt.io/qt-5/qwidget.html#update)
self.text.repaint() # -> Nothing happens
self.repaint() # -> Nothing happens
print(f'Text updated: {text}')
sleep(0.03)
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
视频演示:link
1条答案
按热度按时间lhcgjxsq1#
只需要使用
QThread
在我的程序中使用for循环感谢@musicamante的帮助。