У меня есть al oop, который создает входы и кнопки с именами button1, button2 и т. Д. c. на основе номера строки массива.
Кнопки go через функцию соединения, которая в основном означает, что если я нажму на нее, то будет запущена определенная функция.
exec(
"self.updateNodeButton_" + str(i) + ".clicked.connect(lambda: self.nodeSubmit(
self.editNodeName_" + str(i) + ".text().strip(),
self.editXnode_" + str(i) + ".text(),
self.editYnode_" + str(i) + ".text(),
self.editZnode_" + str(i) + ".text(),
'" + self.appNodes[i + 1, 0] + "'))"
)
Выше Я добавил новую строку в конце каждой запятой, потому что в StackOverflow предел символов слишком мал. Но не волнуйтесь, я пишу это как одну строку в файле Python.
i
повторяется. Я положил то же самое в exec()
, в print
, чтобы увидеть, как это выглядело:
self.updateNodeButton_0.clicked.connect(lambda: self.nodeSubmit(
self.editNodeName_0.text().strip(),
self.editXnode_0.text(),
self.editYnode_0.text(),
self.editZnode_0.text(),
'some_text'))
И повторить, сколько бы i
не было.
Кнопка и все текстовые вводы создаются одинаково над функцией exec()
(в том же l oop), я просто не показывал их, так как они уже работают.
Я получаю следующую ошибку:
Traceback (most recent call last):
File "<string>", line 1, in <lambda>
NameError: name 'self' is not defined
Я действительно не знаю, как использовать lambda
, но я знаю, что должен использовать его, если у моей функции соединения есть параметры.