我想在主类中有一个函数,它不仅有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中没有使用clearTextEditclearTextEdit首先有必要进行争论吗?

09-27 04:26