Я объясню, у меня есть 2 окна виджетов. 1-е главное окно. 2-й QDialog, и у меня есть скрипт. В окне QDialog есть 12 объектов QlineEdit, где клиент пишет ответы на 12 вопросов в Qlabel. После нажатия кнопки «Принять» я хотел бы прочитать каждый из этих Qline. редактирует и помещает данные в список
Я сделал код, который работает:
for x in range(1,13):
linki=[self.d_nieruchomosc.wpr1.text(),
self.d_nieruchomosc.wpr2.text(),
self.d_nieruchomosc.wpr3.text(),
self.d_nieruchomosc.wpr4.text(),
self.d_nieruchomosc.wpr5.text(),
self.d_nieruchomosc.wpr6.text(),
self.d_nieruchomosc.wpr7.text(),
self.d_nieruchomosc.wpr8.text(),
self.d_nieruchomosc.wpr9.text(),
self.d_nieruchomosc.wpr10.text(),
self.d_nieruchomosc.wpr11.text(),
self.d_nieruchomosc.wpr12.text()]
a=linki[x]
nowa_nieruchomosc.append(a)
print(nowa_nieruchomosc)
, но это был только тест, у меня будет гораздо больше объектов QlineEdit, и я хотел бы сделать этоавтоматически в виде строки self.d_nieruchomosc.wpr1.text()
из wpr1..12 будет более 50, и мой код будет очень длинным. Затем я обнаружил, что могу делать по-другому, и я использую код:
def functon(self):
lista = []
for j in range(1, 13):
a = 'self.d_nieruchomosc.wpr{}.text()'.format(j) # make a string formula
b = eval(a)# change string to function* and call it
print(b)
lista.append(b)# add the value from QlineEdit to list
print("Lista to: ", lista)
Проблема в том, что какой-то эксперт по Python сказал мне, что использовать функцию eval () здесь очень плохо, поскольку она может вызывать функцию из строкидано пользователем или что-то вроде этого. Я просто изучаю python и пытаюсь найти решение своего вопроса. Если кто-то говорит, что это плохо, я думаю об этом. Второе решение идеально подходит для меня, но если есть какая-то опасность, я бы хотел ее избежать. Кто-нибудь может дать мне решение, которое может работать без функции eval ().