PYQT5 - 插槽函数不接受默认参数



我正在开发一个 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

有两种可能性可以避免这种情况:

  1. 将信号连接到 Lambda:

    self.button.clicked.connect(lambda: self.doSomething())

  2. 向函数添加一个 pyqtSlot 装饰器,没有签名作为参数:

@QtCore.pyqtSlot()
def doSomething(self, boolVariable = True):
print(boolVariable)

最新更新