我下面的代码适用于python3,但在python2上给出了无效的语法错误。
button = QPushButton('Click')
button.clicked.connect(lambda *args, row=row, column=column: self.myfunction(row, column))
看到错误:
button.clicked.connect(lambda *args, row=row, column=column: self.myfunction(row, column))
^
SyntaxError: invalid syntax
如何为 python2.7 解决这个问题?
在 Python 2.7 中,变量参数必须列在常规参数之后,因此不允许使用带有*args, row=row, column=column
等签名的函数。
要将这个 Python 3 函数移植回 Python 2.7,你必须使用变量关键字参数:
button.clicked.connect(lambda *args, **kwargs: self.myfunction(kwargs.get('row', row), kwargs.get('column', column)))