pyqt,如何使用 sectionClicked 和 lambda

pyqt, How to Use sectionClicked with lambda

我正在尝试使用 pyqt。

当使用'sectionClicked.connect'时,(如下例) 我可以使用 sectionClicked 传递给我的默认(?)参数(索引)。

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):
  ~~~

但是像这样,我不能使用 sectionClicked 传递给我的参数。

我该怎么办?

您可以为 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))