栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

关于使用pyqt5一些使用记录

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

关于使用pyqt5一些使用记录

关于使用pyqt5一些使用记录

环境:Win10、Python3.7、Pyqt5 5.15
网络上pyqt5比较细节的使用说明并不太多,只能边使用边试错
由于是事后想起来记录一下,只好先记录目前碰到还有些印象几个点:

细节相关 1.信号/槽

要确认和Pyqt5各个窗体结构之间的槽执行关系,确认信号绑定的方式
网上找的信息说是可以通过信号去激活信号,具体没测试过各种条件下的情况,目前只清楚如下使用方法会出现错误
错误使用:

这个情况下,QtObjectB 的 信号B-1 没法通过激活 信号A-1 去让 QtObjectA 执行功能A-1。只能让 信号B-1 直接连接 功能A-1 才能正常使用;
能够成功使用的其中一个方式:

2.Run过程,执行QtThread,程序报错(调试中没问题)

这里这个估计是python执行的问题;
具体情况:
使用的PyCharm开发,Debug时没有出现问题,但Run的时候执行个别新增 QtThread 的功能时程序闪退,后台显示错误 -1073740791 (0xC0000409),没有任何其它信息。
因为Debug的时候不会出现问题,只能在每句话上print一下看是在哪里出错的,最后发现是在启动并运行子线程的时候出错;
我写了个新的简易类IOThread继承QtThread,主要是承接一些IO任务,我这边新建以及执行在一条语句中表述,没有命名变量去承接:

def IOFunc(*arg, **karg):
	#function
	pass

Class IOThread(QtThread)
	def __init__ (self, func, *arg, **karg):
		self.func = func
		self.arg = arg
		self.karg = karg
		
	def run(self)
		self.func(*self.arg, **self.karg)
		
Class ObjectA(QtObject):
...
	def FuncA(self):
		...
		IOThread(IOFunc, *Targ, **Tkarg).start()	# 此写法在PyCharm Run会出错,写的程序会报错闪退
		...
	def FuncB(self):
		...
		temp = IOThread(IOFunc, *Targ, **Tkarg)
		temp.start()	# 此写法在PyCharm Run会出错,写的程序会报错闪退
		...	
	def FuncC(self):
		...
		while True:
			#IOThread(IOFunc).start()	# 此写法在PyCharm Run会出错,写的程序会报错闪退
			temp = IOThread(IOFunc, *Targ, **Tkarg)
			temp.start()	# 此写法在PyCharm Run不会出错
		...
	def FuncD(self):
		...
		self.temp = IOThread(IOFunc, *Targ, **Tkarg)
		self.temp.start()	# 此写法在PyCharm Run不会出错
		...
...

根据上述情况判断,应该是python Run编译代码的时候新建了QtThread然后以为用完了,结束函数的时候回收内存,导致出错。需要手动让它在函数内保持;FuncC是表示如果一个子线程的任务是管理、新建线程,可以允许局部变量的方式保持。

暂时有印象的是以上这些 2022年2月18日。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/740531.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号