Lambda 表达式在 PyQt/PySide 中的应用
在 PyQt/PySide 中,当信号(如 clicked
)与槽函数连接时,信号会自带一些参数。例如,clicked
信号会传递一个布尔值表示按钮的选中状态。
如果你直接这样连接:
python
self.pushButton_1.clicked.connect(self.addNumber)
那么当按钮被点击时,addNumber
方法会接收到 clicked
信号的参数(一个布尔值),而不是你想要的数字 '1'。
Lambda 如何解决这个问题?
使用 lambda 表达式可以"包装"你的函数调用,并传递你想要的特定参数:
self.pushButton_1.clicked.connect(lambda: self.addNumber('1'))
这里的 lambda 表达式创建了一个匿名函数,它:
不接受任何参数(忽略
clicked
信号传递的参数)调用
self.addNumber('1')
方法并传递字符串 '1'