Qt Pyside在小部件中显示结果

时间:2013-09-17 06:42:31

标签: python multithreading qt

我在循环中经历了大量数据,并将状态更新为主窗口上的textedit小部件。问题是,在处理完循环中的所有数据后,textedit小部件才会更新。我想在textedit小部件中将其显示为其处理。

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

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

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

1 个答案:

答案 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)