发送和接收来自另一个类pyqt的信号

时间:2016-01-15 08:26:24

标签: python pyqt5

我需要一种方法来接收Class发送给另一个类的信号。 我有2个班: 在我的第一堂课中,我有一个功能,发出一个名为'asignal'的信号。 在我的第二课中,我调用了第一类函数,它发出了一个信号。但是我无法将第一类信号连接到我的按钮。我怎么能这样做?

我收到此错误:AttributeError:' QPushButton'对象没有属性' asignal'

from PyQt5.QtCore import QObject, pyqtSignal
from PyQt5.QtWidgets import *
import sys


class Signals(QObject):
    asignal = pyqtSignal(str)

    def __init__(self):
        super(Signals, self).__init__()
        self.do_something()

    def do_something(self):
        self.asignal.emit('Hi, im a signal')


class Main(QWidget):
    def __init__(self):
        super(Main, self).__init__()
        self.setGeometry(300, 250, 400, 300)
        self.show()
        self.coso()

    def coso(self):
        btn = QPushButton('click me')
        btn.asignal.connect(lambda sig: print("Signal recieved" + sig))
        s = Signals()
        s.do_something()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    main = Main()
    app.exec_()

我想要一种方法来接收我的信号发出的信号。上课到我的主要'类。然后,在我的主类中,将信号连接到Widget。

1 个答案:

答案 0 :(得分:2)

QPushButton不是Signals对象,所以这就是你得到错误的原因。

s = Signals()
s.asignal.connect(lambda sig: print("Signal recieved" + sig))
s.do_something()