簡體   English   中英

如何在不同模塊之間使用信號

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM