[PyQt] Slots with arguments
Peter Bienstman
peter.bienstman at gmail.com
Fri Apr 10 12:30:45 BST 2020
Hi,
I'm building a pop-up menu where the number of entries depends on the
number of plugins a user installs at runtime. The code to deal with
these entries is very similar for all of them, so I want to use a
single slot, but with an argument.
According to some googling, something like this should work when
building the menu:
self.pronouncer_with_id = {}
if len(self.pronouncers):
id_ = 0
for pronouncer in self.pronouncers:
id_ += 1
pronouncer_action = QtWidgets.QAction(\
pronouncer.popup_menu_text, popup)
pronouncer_action.triggered.connect(\
lambda: self.pronounce(str(id_)))
popup.addAction(pronouncer_action)
My slot looks like this:
def pronounce(self, id_):
print(id_)
However, all the menu entries result in the argument 'id_' being the
same, namely the one corresponding to the latest entry added.
Any ideas?
Thanks!
Peter
More information about the PyQt
mailing list