从名称列表中命名对象

时间:2015-04-10 00:10:18

标签: python arrays variables graphic

我使用graphics.py创建一个简单的UI。我想将一些Entry对象设置为字段。有没有办法循环遍历字段名称列表并将它们用作变量名来创建Entry对象?或者这是一个可怕的“动态变量”boogeyman似乎不惜一切代价避免?

从概念上讲,我希望能够写出这样的内容:

from graphics import *
window = GraphWin("contact data", 200, 200)
x = 100
y = 10
field_names = ['name', 'address', 'phone']
field_text = ['Al', '123 4 Street', '555-666-7777']
for i in range(len(field_names)):
field_names[i] = Entry(Point(x, y + 30 * i), 15)
field_names[i].draw(window)
field_names[i].setText(field_text[i])
# don't know how to embed an image here to show the window
window.getMouse()
window.close()

产量:

print(name)
Al
print(address)
123 4 Street
print(phone)
555-666-7777

但我明白了:

print(name)
Traceback (most recent call last):
File "d:\GoogleDrive\CMPT103\graphics\untitled-1.py", line 15, in 0
builtins.NameError: name 'name' is not defined

1 个答案:

答案 0 :(得分:0)

执行此操作时:

field_names[i].setText(field_text[i])

你想做什么?字符串没有setText方法。

然而,即使他们这样做了,你也不会设置你认为的变量。您将更改field_names数组,以便第一个元素不再是name,而是name项的值。

你想要的是一本字典。首先,将字典声明在脚本的顶部:

values_dict = {}

并在其中设置条目:

values_dict[field_names[i]] = field_text[i]

之后您可以像这样访问它们:

print(values_dict['name'])