1

我正在循环中处理大量数据,并将状态更新到我的主窗口上的文本编辑小部件中。问题是,只有在处理完循环中的所有数据之后,textedit 小部件才会更新。我想在 textedit 小部件中显示它作为它的处理。

for i in data:
  ...
  textedit.settext(i) <<---- this part is not updated "fast" enough to textedit widget
  ..

我该怎么办?我是否必须朝某种形式的多线程方向看?谢谢

更新:实际上整个场景是我正在执行一些文件操作,浏览目录,连接到数据库,选择内容然后显示到 GUI。当我的代码在后台运行时,我还想“实时”显示在 QT textedit 小部件中找到的结果。现在,我的小部件显示了我的文件操作完成后的结果。并且在文件操作完成时 GUI “挂起”。谢谢

4

1 回答 1

1

如果不看其他代码就很难编写,但我建议调查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) 
于 2013-09-17T06:58:27.177 回答