我正在使用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
有人可以向我解释为什么不考虑默认参数吗?
谢谢!
与从QAbstractButton继承的任何类一样,QPushButton的clicked
信号也具有clicked
自变量,该参数表示按钮的当前选中(“按下”)状态。
当激活按钮时(即,当鼠标光标位于按钮内部时,按下然后释放,则发出此信号)
释放按钮时,按钮会发出被点击的信号;此时,没有按下按钮,信号参数为checked
。
有两种避免方法:
将信号连接到lambda:
False
向函数添加pyqtSlot装饰器,不带签名作为参数:
self.button.clicked.connect(lambda: self.doSomething())