pyside2使用Qthread停止工作的问题:Process finished with exit code -1073740791 (0xC0000409)

本文详细描述了在使用PySide2的QThread时遇到的程序崩溃问题,通过分析发现线程可能需要一个父控件(parent)来承载。通过设置线程的parent参数或者使用setParent()方法指定一个父控件后,程序能够正常运行。这个问题的解决为理解和使用PySide2的QThread提供了一个关键的提示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在使用PySide2的Qthread新建线程类后,在启动线程时,屏幕一直显示等待,不一会儿就显示python停止工作:

单独运行线程错误log:

Process finished with exit code -1073740791

启动线程的源代码如下:

a=myQThread()
a.setFunc(lambda:pr('i')) 
a.start()

 

在网上找了好多参考,有的说内存溢出,并且很多都指向了tensorflow的训练问题,但我根本就没用这几个包啊!

后来自己仔细寻思了一下,QThread既然属于Pyside2的一个子包(也可以理解为一个控件),那么它是否需要寄托在一个基础控件上来实现其功能。而且Qthead的子类中的__init__()方法在自动生成的时候,继承父类的方法写法是这样的:super(myQThread, self).__init__(parent),内部有一个parent参数,也就是说它可能需要一个可以依托的载体(parent)控件,于是我就将线程的启动代码修改了一下:

a=myQThread(myWidget)
a.setFunc(lambda:pr('i')) 
a.start()

程序居然可以正常运行了!

同时,作为myQThread的对象a,它有一个setParent()方法,同样可以设置载体(parent)控件,代码如下:

a=myQThread()
a.setFunc(lambda:pr('i'))
a.setParent(myWidget)
a.start()

这样的话,依然可以正常运行。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值