我知道如何在模块或类中使用信号:
class A (QObject):
def __init__(self):
QObject.__init__(self)
def afunc (self, i):
self.emit(SIGNAL("doSomePrinting(int)"), i)
def bfunc(self, i):
print "Hello World!", i
sys.exit()
if __name__=="__main__":
app=QCoreApplication(sys.argv)
a=A()
QObject.connect(a,SIGNAL("doSomePrinting(int)"),a.bfunc)
a.afunc(10)
sys.exit(app.exec_())
但我不知道如何在不同模块之间使用信号,例如: a.py和b.py .I在a.py类中定义和绑定信号,我想发出信号来调用在b.py中的a.py中定义的绑定槽。
我用这种方式:
self.logsignal.connect(self.handle)signalMange.signal = self.logsignal
我使用一个类将实例存储在a.py中,我在b.py中调用它,如下所示:
signalMange.signal.emit('开始写项目......')
我的方式怎么样?还有更好的方法吗?
答案 0 :(得分:0)
“a.py”
A类有一个名为my_signal的信号,我们在课堂上定义了一个method_for_signal。
from PyQt4 import QtCore, QtGui
class A(QObject):
my_signal = QtCore.pyqtSignal(str)
def __init__():
super(A, self).__init__()
self.name = "ABCDEFGHIJKLM"
def method_for_signal(self):
self.my_signal.emit(self.name)
“b.py”
这里A类是在B类中导入的,我们想要信号。
from a import A
class B(QObject):
def __init__():
super(B, self).__init__()
@staticmethod
def update(name):
print str(name)
def signal_connect(self):
self.obj = A()
self.obj.my_signal.connect(B.update)
调用时B类的signal_connect方法将使我们的信号提供所需的输出。