【发布时间】:2020-05-31 15:12:32
【问题描述】:
我无法理解信号是否包含某些数据。
例如,信号 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(其中包含布尔类型数据)。在下面的代码中单击 pushBotton 没有任何作用(令我惊讶的是,尽管 def buttonClicked(self,pressed) 需要 pressed 参数,但它并没有引发错误。
btn2.clicked.connect(self.buttonClicked)
def buttonClicked(self,pressed):
if pressed:
self.statusBar().showMessage("l")
在我看来,像windowTitleChanged 这样的一些信号包含一个数据并且可以在槽内使用,而有些则包含一个 None 类型的数据(比如clicked 信号)。
我理解的对吗?
【问题讨论】:
-
QPushButton.clicked将在发出时发送数据,即使按钮不可检查但它发送值 False 这就是为什么在您的按钮示例中没有任何反应。
标签: python pyqt5 signals signals-slots