信号是否包含数据pyqt5?

2024-09-28 05:27:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我很难理解信号是否包含一些数据。 例如,信号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)

而像clicked这样的一些信号不发送数据,除非它们被设置为checkable(包含bool类型的数据)。在下面的代码中单击pushBotton没有任何作用(尽管def buttonClicked(self,pressed)需要一个pressed参数,但这对我来说并没有引起错误,这让我感到惊讶

btn2.clicked.connect(self.buttonClicked)

def buttonClicked(self,pressed):
        if pressed:

            self.statusBar().showMessage("l")

在我看来,像windowTitleChanged这样的一些信号包含数据并且可以在插槽中使用,而有些信号包含非类型数据(比如clicked信号)。 我所理解的是正确的吗


Tags: or数据lambdaself类型信号defconnect
1条回答
网友
1楼 · 发布于 2024-09-28 05:27:41

It seems to me that some signals likewindowTitleChanged contain a data and can be used within the slot, while some contain a None type data (like clicked signal). Is what i've understood correct?

是的,你说得对。通过创建自定义信号,您甚至可以看到这一点

from PyQt5.QtCore import pyqtSignal, Qobject
class Analyzer(QObject):
    analyze_completed = pyqtSignal(bool)

在上面的代码段中,如果发出带有boolanalyze_completed信号,则连接到此信号的插槽将接收该bool作为参数

相关问题 更多 >

    热门问题