PyQt4 TextEdit.clear导致崩溃

时间:2011-12-18 01:32:27

标签: python crash pyqt4 clear qtextedit

我有一个deque类型列表(队列),我想在QTextEdit中显示和更新。 在MyForm类中有一个函数uuenda_kama应该这样做(以及其他一些s ***)。当textEdit为空时,它首次传递此函数,它就像一个魅力,所有必要的字段都会更新。但是在第二次传递时,由于添加了一些文本,它崩溃了,让我看到一个Visual Studio调试器。 尝试评论不同的部分,并出现“self.ui.textEdit.clear()”行引起这种情况。有什么问题,为什么它会在第一次通过?我该怎么办才能修复它? 我现在的代码:

class MyForm(QtGui.QMainWindow):
    ...
    def uuenda_kama(self):
        while True:
        ...
        if vana_que != list(que):
            self.ui.textEdit.clear()
            for i in que:
                self.ui.textEdit.append(i)
            vana_que = list(que)
        sleep(1)

if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    myapp = MyForm()
    uuendamine = Thread(target=myapp.uuenda_kama)
    uuendamine.start()
    myapp.show()
    sys.exit(app.exec_())

1 个答案:

答案 0 :(得分:1)

你不应该在整个应用程序之外创建一个标准的python线程来运行qwidgets上的方法。相反,你应该有一个运行非gui相关逻辑的QThread,然后当它希望主线程影响GUI时发出一个信号

请参阅此其他问题以获得一个好例子:Howto change progress by worker thread

你永远不应该直接在主线程之外调用gui方法。