Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 信号是否包含数据pyqt5?_Python_Pyqt5_Signals_Signals Slots - Fatal编程技术网

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文档找出哪个信号发送什么数据。