[英]How to use signal between different modules
我知道如何在這樣的模塊或類中使用信號:
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。我在a.py類中定義並綁定了信號,我想發出信號以調用綁定的插槽,在b.py中的a.py中定義。
我用這種方式:
self.logsignal.connect(self.handle)signalMange.signal = self.logsignal
我使用一個類將實例存儲在a.py中,並在b.py中將其命名為:
signalMange.signal.emit('開始寫項目...')
那我呢 有更好的方法嗎?
“ 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方法在被調用時將使我們的信號提供所需的輸出。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.