从名称列表中命名对象

naming objects from a list of names

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

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

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

当你这样做时:

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'])