Если написать следующим образом, то код замечательно работает (метод
enter_course() просто выводит полученный аргумент):
globals()['btn_0'].clicked.connect(lambda: self.enter_course([1, 2, 3]))
globals()['btn_1'].clicked.connect(lambda: self.enter_course([2, 3, 4]))
т.е. при нажатии на первую кнопку выводится
[1, 2, 3], а при нажатии на вторую кнопку -
[2, 3, 4]. Так как кнопки генерируются автоматически, то подключить функции, выполняющиеся при нажатии на кнопку необходимо через цикл, поэтому я написал так:
i = 0
sorted_dict = {
'a': [1, 2, 3],
'b': [2, 3, 4]
}
for key, value in sorted_dict.items():
globals()['btn_' + str(i)] = QPushButton( str(key.upper()), self.gridLayoutWidget)
globals()['btn_' + str(i)].clicked.connect(lambda: self.enter_course(value))
globals()['btn_' + str(i)].setToolTip(str(value)) # всплывающая подсказка
i += 1
Но данный код работает не правильно. При нажатии на любую из кнопок, выводится значение, полученное последней кнопкой. При этом в всплывающей подсказке находится правильная информация. В чем может быть проблема?