信号是否包含数据 pyqt5?
Do signals contain data pyqt5?
我无法理解信号是否包含某些数据。
例如,信号 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
包含数据并且可以在槽内使用,而有些信号包含 None 类型的数据(如 clicked
信号)。
我的理解正确吗?
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)
在上面的代码片段中,如果您发出带有 bool
的 analyze_completed
信号,则连接到该信号的插槽将接收 bool
作为参数。
我无法理解信号是否包含某些数据。
例如,信号 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
包含数据并且可以在槽内使用,而有些信号包含 None 类型的数据(如 clicked
信号)。
我的理解正确吗?
It seems to me that some signals like
windowTitleChanged
contain a data and can be used within the slot, while some contain a None type data (likeclicked
signal). Is what i've understood correct?
是的,你是对的。您甚至可以通过创建自定义信号来查看实际效果。
from PyQt5.QtCore import pyqtSignal, Qobject
class Analyzer(QObject):
analyze_completed = pyqtSignal(bool)
在上面的代码片段中,如果您发出带有 bool
的 analyze_completed
信号,则连接到该信号的插槽将接收 bool
作为参数。