我将说明我有2个小部件窗口 第一个主窗口 第二个QDialog 我有剧本 在QDialog窗口中,有12个QlineEdit对象,客户可以在其中为Qlabel写出12个问题的答案 单击“接受”按钮后,我想阅读每个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()函数就可以工作。