Friends!
I have a function that sets up QPushButton.clicked.connects() that iterates through a list of QPushButton widgets. The issue I am having is that it iterates through correctly returning the object, name, widget during the iteration but the signal connected always connects to the last item when it finishes.
def handle_buttons(self):
self.buttons = [self.window.kettle_ON,
self.window.kettle_OFF,
self.window.hot_liquid_ON,
self.window.hot_liquid_OFF,
self.window.chill_ON,
self.window.chill_OFF,
self.window.pump_ON,
self.window.pump_OFF,
self.window.liquid_pump_ON,
self.window.liquid_pump_OFF,]
# Attempt #1
for each_button, widget in enumerate(self.buttons):
tag_name = str(widget.objectName())
print(each_button, tag_name, type(widget))
widget.clicked.connect(lambda checked: self.BUTTON_TOGGLE(str(tag_name)))
# Attempt #2
for each in range(len(self.buttons)):
self.buttons[each].clicked.connect(lambda checked: self.BUTTON_TOGGLE(str(self.buttons[each].objectName())))
This is my output; I clicked all the buttons and my output for Attempt #1 and #2 both have the same output:
0 kettle_ON <class 'PyQt5.QtWidgets.QPushButton'>
1 kettle_OFF <class 'PyQt5.QtWidgets.QPushButton'>
2 hot_liquid_ON <class 'PyQt5.QtWidgets.QPushButton'>
3 hot_liquid_OFF <class 'PyQt5.QtWidgets.QPushButton'>
4 chill_ON <class 'PyQt5.QtWidgets.QPushButton'>
5 chill_OFF <class 'PyQt5.QtWidgets.QPushButton'>
6 pump_ON <class 'PyQt5.QtWidgets.QPushButton'>
7 pump_OFF <class 'PyQt5.QtWidgets.QPushButton'>
8 liquid_pump_ON <class 'PyQt5.QtWidgets.QPushButton'>
9 liquid_pump_OFF <class 'PyQt5.QtWidgets.QPushButton'>
liquid_pump_OFF
liquid_pump_OFF
liquid_pump_OFF
liquid_pump_OFF
liquid_pump_OFF
liquid_pump_OFF
liquid_pump_OFF
liquid_pump_OFF
liquid_pump_OFF
NOW, if I do it standalone like this...it works.
self.buttons[0].clicked.connect(lambda checked: self.BUTTON_TOGGLE(str(self.buttons[0].objectName())))
self.buttons[1].clicked.connect(lambda checked: self.BUTTON_TOGGLE(str(self.buttons[0].objectName())))
self.buttons[2].clicked.connect(lambda checked: self.BUTTON_TOGGLE(str(self.buttons[0].objectName())))
.
.
.
Any insight would be greatly appreciated!