0

I am trying to use pyqt.

When using 'sectionClicked.connect', (Like below case) I can use the default(?) parameter(index) that sectionClicked pass to me.

self.horizontalHeader = self.table.horizontalHeader()
self.horizontalHeader.sectionClicked.connect(self.HeaderClicked)

def HeaderClicked(index):
  ~~~

In this case, I want to add arguments at def HeaderClicked.

Like below

self.horizontalHeader = self.table.horizontalHeader()
self.horizontalHeader.sectionClicked.connect(lambda : self.HeaderClicked(foo, bar))

def HeaderClicked(index, foo, bar):
  ~~~

But Like this, I can't use parameter that sectionClicked pass to me.

What should i do?

Park changhae
  • 59
  • 1
  • 6

1 Answers1

1

You can provide parameters to a lambda expression so you could do something like this

self.horizontalHeader.sectionClicked.connect(lambda index: self.HeaderClicked(index, foo, bar))

def HeaderClicked(index, foo, bar):
    ...

Another option would be to use functools.partial instead of a lambda expression, i.e.

from functools import partial

self.horizontalHeader.sectionClicked.connect(partial(HeaderClicked, foo=foo, bar=bar))
Heike
  • 24,102
  • 2
  • 31
  • 45