Python 3.x pyqt,如何与lambda一起使用sectionClicked
我正在尝试使用pyqt 使用“sectionClicked.connect”时,(如下图所示) 我可以使用默认的(?)参数(索引)传递给我Python 3.x pyqt,如何与lambda一起使用sectionClicked,python-3.x,pyqt,pyqt5,Python 3.x,Pyqt,Pyqt5,我正在尝试使用pyqt 使用“sectionClicked.connect”时,(如下图所示) 我可以使用默认的(?)参数(索引)传递给我 self.horizontalHeader = self.table.horizontalHeader() self.horizontalHeader.sectionClicked.connect(self.HeaderClicked) def HeaderClicked(index): ~~~ 在本例中,我想在def HeaderClicked处
self.horizontalHeader = self.table.horizontalHeader()
self.horizontalHeader.sectionClicked.connect(self.HeaderClicked)
def HeaderClicked(index):
~~~
在本例中,我想在def HeaderClicked处添加参数
如下
self.horizontalHeader = self.table.horizontalHeader()
self.horizontalHeader.sectionClicked.connect(lambda : self.HeaderClicked(foo, bar))
def HeaderClicked(index, foo, bar):
~~~
但像这样,我不能使用传递给我的参数
self.horizontalHeader = self.table.horizontalHeader()
self.horizontalHeader.sectionClicked.connect(self.HeaderClicked)
def HeaderClicked(index):
~~~
我该怎么办?您可以为lambda表达式提供参数,以便执行类似操作
self.horizontalHeader.sectionClicked.connect(lambda index: self.HeaderClicked(index, foo, bar))
def HeaderClicked(index, foo, bar):
...
另一种选择是使用functools.partial
而不是lambda表达式,即
from functools import partial
self.horizontalHeader.sectionClicked.connect(partial(HeaderClicked, foo=foo, bar=bar))