Python_使用GUI和多线程时报错

开发环境: win10, Pycharm2021

这里记录一下解决该问题的历程。该工程中使用到了PyQt5的GUI,多线程技术等。使用pycharm,在程序运行时,程序偶尔会莫名奇妙的退出,并只是报下面的错误:

Process finished with exit code -1073741819 (0xC0000005)

纳尼,只是给出了这一个报错,却没有任何traceback??!(想直接看结论的请下滑到底)并且这个报错只是偶尔才会给出。上网搜索上面这个报错,查到了这个,按照其给出的方法试了试:

image-20211129214434686

image-20211129214525252

于是查看win10的事件管理器,发现了下面的报错信息,而这些竟然在pycharm中完全不显示。由下面看出来应该是pyqt5引起的报错,于是重新安装了pyqt5,报错并没有解决。

image-20211129214749891

又上网搜索该 事件管理器中的报错,没有解决问题。


于是又上网搜索 pycharm come across error without traceback,终于努力对了方向。找到了这个,按照下面这种方法试了试,终于在debug时给出了具体的 traceback

image-20211129215454501

Debug的Console中给出的具体的报错如下,而且在程序靠前的某处还给出了一个警告,但是并没有影响程序的往下执行。

警告如下:
QObject::setParent: Cannot set parent, new parent is in a different thread

--snippets--

报错如下:
QObject: Cannot create children for a parent that is in a different thread.
(Parent is QTextDocument(0x18992e5ad60), parent's thread is QThread(0x18990b3af30), current thread is QThread(0x18993804600)

于是上网搜索这两个报错,发现了link1, link2, link3

image-20211129220318194

image-20211129220554350

看完后有了灵感,总之是pyqt5的GUI和多线程导致的报错。于是上网搜索 pyqt5 qthread关键词,找到了一个令人欣喜若狂的文章:戳我。该文章中还讲了python的线程和QThread的比较。看完后完全明白了,上面的这些警告和报错是如何产生的。我的程序是先运行windows的部分,此时是在mainThread里,然后在mainThread里又开了一个python的thread去处理mainThread里的一些objects和widgets,而每当要访问这些widgets的地方都会抛出上述的警告和错误

然后按照该文章,比葫芦画瓢就好了。搞定~

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值