Python 信号是否包含数据pyqt5?
我很难理解信号是否包含一些数据。 例如,信号Python 信号是否包含数据pyqt5?,python,pyqt5,signals,signals-slots,Python,Pyqt5,Signals,Signals Slots,我很难理解信号是否包含一些数据。 例如,信号windowTitleChanged包含一个str类型的数据,该数据需要传递到其插槽: self.windowTitleChanged.connect(lambda x : self.onTitle(x)) ## or self.windowTitleChanged.connect(self.onTitle) which also automatically sends a data def onTitle(self,k): p
windowTitleChanged
包含一个str类型的数据,该数据需要传递到其插槽:
self.windowTitleChanged.connect(lambda x : self.onTitle(x))
## or self.windowTitleChanged.connect(self.onTitle) which also automatically sends a data
def onTitle(self,k):
print(k)
而某些信号,如单击的
,除非设置为可检查的(包含布尔类型数据),否则不会发送数据。单击下面代码中的按钮按钮没有任何作用(尽管def buttonClicked(self,pressed)
需要一个pressed
参数,但对我来说,这并没有引发错误,这让我感到惊讶
btn2.clicked.connect(self.buttonClicked)
def buttonClicked(self,pressed):
if pressed:
self.statusBar().showMessage("l")
在我看来,一些信号,如windowTitleChanged
包含数据并可在插槽中使用,而一些信号包含非类型数据(如单击的
信号)。
我所理解的是正确的吗
在我看来,有些信号,如windowTitleChanged
包含数据,可以在插槽中使用,而有些信号包含非类型数据(如单击的
信号)。我的理解正确吗
是的,你是对的。你甚至可以通过创建一个自定义信号来看到这一点
from PyQt5.QtCore import pyqtSignal, Qobject
class Analyzer(QObject):
analyze_completed = pyqtSignal(bool)
在上面的代码片段中,如果您使用bool
发出analyze\u completed
信号,则连接到此信号的插槽将接收该bool
作为参数。QPushButton。单击将在发出时发送数据,即使按钮不可检查,但它发送的值为False,这就是为什么在yo中你的按钮示例什么都没有发生。那么说Qt中的每个内置信号都包含一个数据,如果需要可以使用它是否安全呢?我如何知道哪个信号包含什么数据?我不知道是否每个内置信号都包含数据,但我可以说它不一定包含数据。最好检查需要处理的参数。From:信号的签名必须与接收插槽的签名相匹配。(事实上,插槽的签名可能比它接收的信号短,因为它可以忽略额外的参数。)因此,看起来您可以忽略您不感兴趣的参数,但我不知道这对PyQt是否有效。@Asocia Yes这对PyQt5有效。To OP:您可以使用正式的Qt文档找出哪个信号发送什么数据。