python - 根据名称列表创建对象和变量
问题描述
我想创建一个表单并稍后阅读它的内容,目前我正在考虑编写如下内容:
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 我希望这段代码更清楚我想要实现的目标
解决方案
为什么需要动态建立这些名称?您是否也打算使用动态引用来访问它们?处理这种情况的首选方法是使用容器对象(例如列表或字典)来保存对象。
您的第二个片段几乎是正确的。写是完全正常和可以接受的
text_list = []
for object in objectlist:
object_text = object.get("1.0", tk.END)
text_list.append(object_text)
您可能已经注意到,在您为这些变量赋值之前,您无法创建包含word
,otherword
的列表,因此该语句需要在程序的稍后部分出现。more_word
推荐阅读
- listview - 如何让 listView 的父级捕获拖动手势事件
- python - 如何使用 AWS Xray 跨多个 lambda 和 SQS 连接跟踪
- react-native - 有什么方法可以在 react-native 中调用带参数的函数?
- c# - 按钮单击更改正文上的背景图像并刷新页面
- html - AWS S3 - 允许公众查看 HTML 文件
- javascript - 到达网站底部时如何使导航可见?
- r - 如何复制数组中的矩阵
- routing - CMS 类似于 Slim 3 的通配符路由
- pandas - 从另一个数据帧的行值中提取数据帧中的特定行值
- mysql - MySQL 查询在非常大的事务组中查找 3 个相同的事务