首页 > 解决方案 > 根据名称列表创建对象和变量

问题描述

我想创建一个表单并稍后阅读它的内容,目前我正在考虑编写如下内容:

import tkinter as tk
objectkeylist=["name","lastname","age"]
root = tk.Tk()
textwidgetdict=dict()
textwidgetdict("name") =tk.Text(root, height=3, width=50)
textwidgetdict("lastname")=tk.Text(root, height=3, width=50)
textwidgetdict("age")=tk.Text(root, height=3, width=50)

textwidgetdict("name").pack()
textwidgetdict("lastname").pack()
textwidgetdict("age").pack()

def getcontent():
  formcontentdict=dict()
  formcontentdict("name") =textwidgetdict("name").get("1.0", tk.END)
  formcontentdict("lastname") =textwidgetdict("lastname").get("1.0", tk.END)
  formcontentdict("age") =textwidgetdict("age").get("1.0", tk.END)
  return formcontentdict()


tk.mainloop()

我可以以某种方式减少冗余代码,例如

map(lambda : objectlist[index]_text=objectlist.get("1.0", tk.END) , objectlist)

或者

for object in objectlist:
    object_text=objectlist.get("1.0", tk.END)

?

我什至不知道搜索这个的正确关键字是什么。

我知道更好的主意是使用 objectlist 的项目作为字典的键,如下所述:https ://stackoverflow.com/a/4010869/3503111 我希望这段代码更清楚我想要实现的目标

标签: pythonpython-3.xtkinter

解决方案


为什么需要动态建立这些名称?您是否也打算使用动态引用来访问它们?处理这种情况的首选方法是使用容器对象(例如列表或字典)来保存对象。

您的第二个片段几乎是正确的。写是完全正常和可以接受的

text_list = []
for object in objectlist:
    object_text = object.get("1.0", tk.END)
    text_list.append(object_text)

您可能已经注意到,在您为这些变量赋值之前,您无法创建包含word,otherword的列表,因此该语句需要在程序的稍后部分出现。more_word


推荐阅读