【发布时间】:2020-12-09 15:32:27
【问题描述】:
在我的代码中,我在 2 个单独的文件中有 2 个类。我有一个信号testSignal,一个按钮pushButton,我像这样连接按钮:
testSignal = QtCore.pyqtSignal()
pushButton.pressed.connect(buttonPressed)
def buttonPressed(self):
testSignal.emit()
现在我想要做的是“接收”类/文件中发出的信号,但我对 emit() 的实际工作原理有些不知所措。有没有人有任何关于 emit() 函数指南的链接或者可以提供帮助?
谢谢
【问题讨论】:
-
您的问题不清楚。首先要在class级别声明一个信号,这样instance的信号才能正确连接。信号的
emit()发出 该信号并调用与其连接的所有插槽/函数,可能带有提供的参数(或没有,如您的情况)。也就是说,不清楚你真正需要/想要做什么:你能更好地解释一下自己吗? -
好的,所以当我发出一个信号时,所有连接到该信号的函数都会被调用,对吧?那么如何将函数连接到信号呢?
-
语法是
signal.connect(function)。如果信号在当前类中,则self.testSignal.connect(self.someFunction)。 -
所以在我的例子中应该是
testSignal.connect(function)对吧?因为当我在我的代码中这样做时,我得到:AttributeError: 'PyQt5.QtCore.pyqtSignal' object has no attribute 'connect' -
如前所述,信号必须在
class ClassName():构造函数缩进级别的类级别声明。
标签: python pyqt5 signals-slots