I have list of QPushButton.i want to be able to make all button in list to emit signals in much more simpler way.
here's my code:
def btn_click(self):
self.menu_list[0].clicked.connect(lambda: self.add_cart(self.menu_list[0]))
self.menu_list[1].clicked.connect(lambda: self.add_cart(self.menu_list[1]))
self.menu_list[2].clicked.connect(lambda: self.add_cart(self.menu_list[2]))
self.menu_list[3].clicked.connect(lambda: self.add_cart(self.menu_list[3]))
self.menu_list[4].clicked.connect(lambda: self.add_cart(self.menu_list[4]))
self.menu_list[5].clicked.connect(lambda: self.add_cart(self.menu_list[5]))
def add_cart(self):
print(b.text())
You can do it in loop:
main
def btn_click(self):
for button in menu_list:
button.clicked.connect(self.add_cart)
def add_cart(self):
b = self.sender()
print(b.text())
alternative
def btn_click(self):
for button in self.menu_list:
button.clicked.connect(lambda btn=button: self.add_cart(btn))
Note that you need btn=button for making closure, otherwise all buttons woud refer to the last one.
ps:For more explanation on main way read @ekhumoro comment below