我想在主类中有一个函数,它不仅有self参数。
class Ui_Form(object):
def clearTextEdit(self, x):
self.plainTextEdit.setPlainText(" ")
print("Script in Textbox is Cleaned!",)
x将是我的附加参数,我希望通过单击调用cleartextedit。
self.pushButton_3.clicked.connect(self.clearTextEdit(x))
它不允许我在clicked中将x作为参数写入。你能帮助我吗!
最佳答案
解决方案
这是一个使用lambda的完美地方:
self.pushButton_3.clicked.connect(lambda: self.clearTextEdit(x))
记住,
connect
需要一个没有参数的函数,所以我们必须将函数调用包装到另一个函数中。解释
你的原话
self.pushButton_3.clicked.connect(self.clearTextEdit(x)) # Incorrect
当您调用
self.clearTextEdit(x)
时,实际上是在调用connect
,然后您得到一个错误,因为clearTextEdit
不返回无参数函数,这正是connect
想要的。兰姆达?
相反,通过传递
lambda: self.clearTextEdit(x)
,我们给connect
一个不带参数的函数,当调用它时,它将调用self.clearTextEdit(x)
上面的代码相当于def callback():
return self.clearTextEdit(x)
self.pushButton_3.clicked.connect(callback)
但是对于lambda,我们不必命名“callback”,只需直接传递它。
如果您想了解更多有关lambda函数的信息,可以查看this question了解更多详细信息。
另一方面,我注意到您在
x
中没有使用clearTextEdit
。clearTextEdit
首先有必要进行争论吗?