理解 PySide6 中的信号

问题描述 投票:0回答:0

我有两个文件,sender.py 和 receiver.py

receiver.py

from Sender import sender

class receiver():
    """
    receiver
    """

    def __init__(self) -> None:

        print(receiver.__name__)

        self.rem = sender()
        self.rem.comm.connect(self.txtReceived)

    def txtReceived(self, txt):

        print(self.txtReceived.__name__)
        print(txt)

if __name__== "__main__":
    
    receiver()

和发件人.py

from PySide6.QtCore import QObject, Signal

class sender(QObject):
    """
    sender
    """

    comm = Signal(str)

    def __init__(self) -> None:

        QObject.__init__(self)
        print(sender.__name__)
        
        self.__emitComm()

    
    def __emitComm(self):

        print(self.__emitComm.__name__)
        self.comm.emit("TxT")

但是我不知道为什么,在receiver.py中,流代码没有到达txtReceived方法。

我的错误在哪里?

这是该死的简单代码,但我被卡住了。

更新 1

在课堂接收者中,我改变了:

    def __init__(self) -> None:

        print(receiver.__name__)

        self.rem = sender()

        self.rem.emitComm()
        self.rem.comm.connect(self.txtReceived)

    def txtReceived(self, txt):

        print(self.txtReceived.__name__)
        print(txt)

发件人.py

    def __init__(self) -> None:

        QObject.__init__(self)
        print(sender.__name__)
    
    
    def emitComm(self):

        print(self.emitComm.__name__)
        
        self.comm.emit("TxT")

输出:

接收器
发件人
发出通讯

但还是一样的结果。它不运行 txtReceived 方法。

更新2

写下我的代码的完整示例。 接收器.py

from Sender import sender

class receiver():
    """
    receiver
    """

    def __init__(self) -> None:

        print(receiver.__name__)

        self.rem = sender()

        self.rem.emitComm()
        self.rem.comm.connect(self.txtReceived)

    def txtReceived(self, txt):

        print(self.txtReceived.__name__)
        print(txt)

if __name__== "__main__":
    
    receiver()

发件人.py

from PySide6.QtCore import QObject, Signal

class sender(QObject):
    """
    sender
    """

    comm = Signal(str)

    def __init__(self) -> None:

        QObject.__init__(self)
        print(sender.__name__)
    
    
    def emitComm(self):

        print(self.emitComm.__name__)
        
        self.comm.emit("TxT")
python pyside6 qobject
© www.soinside.com 2019 - 2024. All rights reserved.