在for循环中自动创建唯一变量?

时间:2015-03-25 22:03:07

标签: python variables sqlite tkinter

我正在写这里,询问是否有办法让Python在for循环中自动创建新的唯一变量,在下面显示的代码的上下文中:

for row in customerdetails2:
    AA10 = Entry(CustomerEdit)
    AA10.insert(0, row[0])
    AA10.grid(row = editnum, column = 0)
    AA11 = Entry(CustomerEdit)
    AA11.insert(0, row[1])
    AA11.grid(row = editnum, column = 1)
    AA12 = Entry(CustomerEdit)
    AA12.insert(0, row[2])
    AA12.grid(row = editnum, column = 2)
    AA13 = Entry(CustomerEdit)
    AA13.insert(0, row[3])
    AA13.grid(row = editnum, column = 3)
    AA14 = Entry(CustomerEdit)
    AA14.insert(0, row[4])
    AA14.grid(row = editnum, column = 4)

基本上,对于Python在customerdetails2中找到的每一行(它正在从中收集信息的数据库),我希望它创建一组新的输入字段,但是变量的名称不同,而不是所有被调用的输入字段#39; AA10',' AA11',' AA12'等。这可能吗?如果没有,是否有合理的替代方案可以达到相同的效果? 抱歉,我仍然对Python很陌生,但提前感谢。

1 个答案:

答案 0 :(得分:5)

您可以拥有list条目:

entries = []
for index, row in enumerate(customerdetails2):
    entry = Entry(CustomerEdit)
    entry.insert(0, row[index])
    entry.grid(row = editnum, column = index)
    entries.append(entry)

当您需要引用它们时,只需通过列表中的索引引用。

如果您需要保留AA1前缀,请尝试dictionary

entries = {}
for index, row in enumerate(customerdetails2):
    entry = Entry(CustomerEdit)
    entry.insert(0, row[index])
    entry.grid(row = editnum, column = index)
    entries['AA1{}'.format(index)] = entry

enumerate是一个函数,它接受一个可迭代的对象并遍历该对象,并在该索引处产生索引和对象。