PYQT5-插槽函数不采用默认参数[duplicate]

问题描述 投票:0回答:1

我正在使用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

有人可以向我解释为什么不考虑默认参数吗?

谢谢!

python pyqt pyqt5 signals-slots slot
1个回答
0
投票

与从QAbstractButton继承的任何类一样,QPushButton的clicked信号也具有clicked自变量,该参数表示按钮的当前选中(“按下”)状态。

当激活按钮时(即,当鼠标光标位于按钮内部时,按下然后释放,则发出此信号)

释放按钮时,按钮会发出被点击的信号;此时,没有按下按钮,信号参数为checked

有两种避免方法:

  1. 将信号连接到lambda:

    False

  2. 向函数添加pyqtSlot装饰器,不带签名作为参数:

self.button.clicked.connect(lambda: self.doSomething())
© www.soinside.com 2019 - 2024. All rights reserved.