Я не уверен, что должно содержать ваше objectlist
, потому что его содержимое не определено до тех пор, пока оно не будет определено, и если вы его определили, вы все равно немедленно его перезапишите.
Тот факт, что существуют отдельные имена переменных, кажется, не имеет большого значения, но, возможно, это упрощение, которое будет полезно.
Если у вас есть список имен компонентов:
component_names = ['word', 'otherword', 'moreword']
И функция, которая создает новый компонент, упаковывает его, и возвращает функцию, которая получает текст:
def create_pack_text(root):
comp = tk.Text(root, height=3, width=50)
comp.pack()
# return comp.get('1.0', tk.END)
return lambda: comp.get('1.0', tk.END)
Вы можете получить точные сопоставления имен текстовым частям, например так:
root = tk.Tk()
mapping = { name: create_pack_text(root) for name in component_names }
tk.mainlook()
# edit
mapping['word'] # a function which returns the contents of the component
print(mapping['word']())
EDIT
Вы можете заставить create_pack_text
возвращать кортеж текстового компонента и лямбда-выражения. Тогда
comp, fun = mapping['word']
# comp is the actual component
# fun() gets the text in it