PyQt4型文本编辑。清除导致崩溃

2024-10-01 05:05:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个deque类型列表(队列),我想在QTextEdit中显示和更新它。 MyForm类中有一个函数uuenda_kama应该这样做(还有其他一些函数)。当textEdit为空时,此函数的第一次传递就像一个符咒,所有必需的字段都会更新。但在第二个过程中,因为有一些文本被添加到其中,它会崩溃,并将一个visualstudio调试器扔到我的脸上。 试着把不同的部分都说出来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_())

Tags: 函数selfappuiifmyapplistque
1条回答
网友
1楼 · 发布于 2024-10-01 05:05:43

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

请参考另一个问题以获得一个好的示例:Howto change progress by worker thread

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

相关问题 更多 >