Nx wrote:
Is there a better solution to following problem :
I want to unpack a list into variables
the list is created at runtime and I do not know
how many items there will be , but I know not more than 25.
The list unpacks into variables which are prev. defined as
line1,line2....line25 which are actually the names of lineedit fields in
a Qt gui application and which need to be populated.
I currently use following to achieve that :
c=0
while c < len(mylinelist):
c = c + 1
if c==1:
self.line1.setText(mylinelist[c])
if c==2 :
self.line2.setText(mylinelist[c])
.
.
.
if c==25:
self.line25.setText(mylinelist[c])
I rather have someting like
pseudo code follows:
self.line+"c"+.setText(mylinelist[c])
How to do that ?
for index, value in enumerate(mylinelist):
getattr(self, "line%d" % (index + 1)).setText(value)
A better approach would be to create a list of lineedit fields in the
__init__() method instead of (or in addition to) the individual lineNNN
attributes and then just write
for edit, value in zip(self.lineedits, mylinelist):
edit.setText(value)
If you want to play it safe you might also want to clear the extra
lineedits:
from itertools import repeat, chain, izip
for edit, value in izip(self.lineedits, chain(mylinelist, repeat(""))):
edit.setText(value)
Peter