我在循环中经历了大量数据,并将状态更新为主窗口上的textedit小部件。问题是,在处理完循环中的所有数据后,textedit小部件才会更新。我想在textedit小部件中将其显示为其处理。
for i in data:
...
textedit.settext(i) <<---- this part is not updated "fast" enough to textedit widget
..
我该怎么办?我是否必须朝某种形式的多线程方向发展?感谢
更新:实际上整个场景是我正在做一些文件操作,浏览目录,连接到数据库,选择内容然后显示到GUI。当我的代码在后台运行时,我还想在“实时”中显示找到QT textedit小部件的结果。现在,我的小部件在我的文件操作完成后显示结果。并且在文件操作完成时GUI“挂起”。 感谢
答案 0 :(得分:1)
在没有看到其余代码的情况下很难写,但我建议调查slots and signals in Qt。
class myObject(QObject):
somethingChanged= pyqtSignal(str)
def __init__(self):
super(myObject).__init__(self)
# Here we indicate we will try and catch the signal.
self.somethingChanged.connect(self.updateText)
def processData(self):
for i in data:
...
# Inside the loop you can fire off a signal.
object.emit("somethingChanged")
...
def updateText(self,text):
textedit.setText(text)