mes*_*ali 3 python function click pyside qpushbutton
我想在主类中有一个函数,它不仅具有自身参数.
class Ui_Form(object):
def clearTextEdit(self, x):
self.plainTextEdit.setPlainText(" ")
print("Script in Textbox is Cleaned!",)
Run Code Online (Sandbox Code Playgroud)
x将是我的附加参数,我希望通过单击调用clearTextEdit.
self.pushButton_3.clicked.connect(self.clearTextEdit(x))
Run Code Online (Sandbox Code Playgroud)
它不允许我在点击时将x作为参数写入.你能帮助我吗!
Lil*_*ung 13
这是一个使用lambda的完美地方:
self.pushButton_3.clicked.connect(lambda: self.clearTextEdit(x))
Run Code Online (Sandbox Code Playgroud)
请记住,connect期望一个没有参数的函数,所以我们必须在另一个函数中包含函数调用.
你原来的陈述
self.pushButton_3.clicked.connect(self.clearTextEdit(x)) # Incorrect
Run Code Online (Sandbox Code Playgroud)
当你调用 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)
Run Code Online (Sandbox Code Playgroud)
但是使用lambda,我们不必命名"回调",我们只是直接传递它.
如果您想了解有关lambda函数的更多信息,可以查看此问题以获取更多详细信息.
在一个不相关的说明中,我注意到你没有x在任何地方使用clearTextEdit.是否有必要clearTextEdit首先进行争论?