Лямбда-ошибка в подключении кнопки PyQt при использовании внутри exe c () - PullRequest
0 голосов
/ 13 апреля 2020

У меня есть 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, но я знаю, что должен использовать его, если у моей функции соединения есть параметры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...