我正在开发一个 PYQT5 接口,QPushButton 应该调用一个具有默认参数的插槽函数。
self.button = QtWidgets.QPushButton("Button")
self.button.clicked.connect(self.doSomething)
def doSomething(self, boolVariable = True):
print(boolVariable)
当我运行doSomething函数时的结果:
[in] object_instance.doSomething()
--> True
但是如果我单击按钮,我会得到以下结果:
--> False
有人可以解释为什么不考虑默认参数吗?
谢谢!
QPushButton的clicked
信号,就像任何继承自QAbstractButton的类一样,有一个checked
参数,表示按钮的当前检查("按下"(状态。
当按钮被激活时发出此信号(即,当鼠标光标在按钮内时按下然后释放(
按钮在释放时发出单击的信号;此时,按钮未按下,信号参数将被False
。
有两种可能性可以避免这种情况:
将信号连接到 Lambda:
self.button.clicked.connect(lambda: self.doSomething())
向函数添加一个 pyqtSlot 装饰器,没有签名作为参数:
@QtCore.pyqtSlot()
def doSomething(self, boolVariable = True):
print(boolVariable)