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))
我正在尝试使用 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))