Почему не возвращаются значения text() и styleSheet()?

Пишу код на Python и SQLite и тут возникает проблема: значения text() и styleSheet() возвращаются как "None", хотя и текст и таблица стилей есть. Из-за чего возникает проблема и как ее можно решить? Заранее спасибо.


    def load(self):
        cur = self.con.cursor()
        sql = '''INSERT INTO Задачи(Название, label, Текст, Статус, Дата, LCD, Время, kol, kol_1, kol_2) 
        VALUES(?, ?, ?,
        ?, ?, ?, ?, ?, ?, ?) '''
        rezult = cur.execute(sql, ("self.widget_{}".format(self.i),
                                   'self.label_{}'.format(self.i),
                                   str(exec('self.label_{}.text()'.format(self.i))),
                                   str(exec("self.widget_{}.styleSheet()".format(self.i))),
                                   str(self.date),
                                   'self.lcdNumber_{}'.format(self.i),
                                   "{}:{}".format(self.t.hour(), self.t.minute()),
                                   str(self.kol),
                                   str(self.kol_1),
                                   str(self.kol_2)))
        self.con.commit()


Ответы (1 шт):

Автор решения: gil9red

Вместо exec используйте eval:

eval('self.label_{}.text()'.format(self.i))

и

eval("self.widget_{}.styleSheet()".format(self.i))

Но лучше не использовать eval/exec, а честно поместить виджеты в списки (или другие коллекции) и работать с ними через цикл

→ Ссылка