一、前言
由于前段时间需要编写一些脚本用于测试,并使之UI化。但是在使用线程中调用需要与GUI的线程交互,正常使用回调会提示错误,查了一些资料显示需要使用信号传递。
网上也没有具体描述此类问题的解决方案,比较零散。
二、自定义信号
from PyQt4 import QtGui
from PyQt4 import QtCore
def func(str):
printf str
_Singnal = QtCore.pyqtSignal(str)
_Singnal .connect(func)
_Singnal .emit("hello")
我们可以通过自定义信号绑定对应的槽,信号的传递参数可以任意,这样就方便我们使用。
三、在类中使用自定义信号
一般我们希望功能性类与GUI类不捆绑在一起,但是希望与GUI实现一定量的交互,这时自定义信号的优势就体现出来了,只需要把GUI的函数作为槽使用就可以了。
from PyQt4 import QtGui
from PyQt4 import QtCore
class mySingnal(QtCore.QObject)
_Singnal = QtCore.pyqtSignal(str)
def __init__(self,func):
super(mySingnal, self).__init__()
self. _Singnal.connect(func)
def func(str):
_Singnal .emit(str)
在自定义的类中使用自定义信号需要注意:
1、信号的定义不能在初始化函数中
2、需要继承QtCore.QObject
3、用其他函数发送信号参量