I dynamically add QPushbutton with a loop in which the button is setup with clicked even using lambda. But when I click the button, it can't print the correct value for me. It always give me the last value.
import sys
from PyQt5.QtWidgets import \
(QApplication,QMainWindow, QPushButton,
QVBoxLayout, QWidget)
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
qv = QVBoxLayout()
test_list = [['value1','button_text1'],['value2','button_text2']]
for item in test_list:
btn = QPushButton(item[1])
btn.clicked.connect(lambda x:self.button_clicked(item[0]))
qv.addWidget(btn)
dummy_widget = QWidget()
dummy_widget.setLayout(qv)
self.setCentralWidget(dummy_widget)
self.setFixedSize(400, 300)
def button_clicked(self, item_text):
print(item_text)
app = QApplication(sys.argv)
window = MainWindow()
window.show()
app.exec_()
The code btn.clicked.connect(lambda x:self.button_clicked(item[0])) always give me : value2...Why?