【问题标题】:pyqt, How to Use sectionClicked with lambda [duplicate]pyqt,如何使用带有 lambda 的 sectionClicked [重复]
【发布时间】:2020-12-29 19:20:09
【问题描述】:

我正在尝试使用 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 传递给我的参数。

我该怎么办?

【问题讨论】:

    标签: python-3.x pyqt pyqt5


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2018-01-02
      • 1970-01-01
      • 2020-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-02
      • 2021-12-06
      • 2015-03-31
      相关资源
      最近更新 更多