PyQt4 TextEdit.clear导致崩溃 - python

我有一个双端队列类型列表(队列),我想在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_())

参考方案

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

请参考此其他问题以获取良好示例:Howto change progress by worker thread

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

如何在PyQt4的动态复选框列表中检查stateChanged - python

所以我要从PyQt4的列表中添加复选框。但是我找不到在Window类中对每个状态使用stateChanged的方法。这是从列表元素添加它们的功能: def addCheckbox(self): colunas = Graphic(self.caminho).getColunas() for col in colunas: c = QtGui.QCheckBo…

Python sqlite3数据库已锁定 - python

我在Windows上使用Python 3和sqlite3。我正在开发一个使用数据库存储联系人的小型应用程序。我注意到,如果应用程序被强制关闭(通过错误或通过任务管理器结束),则会收到sqlite3错误(sqlite3.OperationalError:数据库已锁定)。我想这是因为在应用程序关闭之前,我没有正确关闭数据库连接。我已经试过了: connectio…

Python-Excel导出 - python

我有以下代码:import pandas as pd import requests from bs4 import BeautifulSoup res = requests.get("https://www.bankier.pl/gielda/notowania/akcje") soup = BeautifulSoup(res.cont…

Python:传递记录器是个好主意吗? - python

我的Web服务器的API日志如下:started started succeeded failed 那是同时收到的两个请求。很难说哪一个成功或失败。为了彼此分离请求,我为每个请求创建了一个随机数,并将其用作记录器的名称logger = logging.getLogger(random_number) 日志变成[111] started [222] start…

Python pytz时区函数返回的时区为9分钟 - python

由于某些原因,我无法从以下代码中找出原因:>>> from pytz import timezone >>> timezone('America/Chicago') 我得到:<DstTzInfo 'America/Chicago' LMT-1 day, 18:09:00 STD…