我已经创建了这样的namedtuple。从字符串中检索namedvalue值
Named_Tuple_1 = namedtuple("Coordinates", ["x", "y", "z"], verbose=False, rename=False)
Point_1 = Named_Tuple_1(x=1, y=1, z=1)
Point_2 = Named_Tuple_1(x=2, y=2, z=2)
Point_3 = Named_Tuple_1(x=3, y=3, z=3)
我可以像这样轻松地访问值。
Point_2.x
但是,当我尝试从输入框中获取Point_2时,出现此错误。
AttributeError: 'str' object has no attribute 'x'
因此,我得知输入框返回字符串值。
如何从字符串中获取namedtuple值?
String_1 = "Point_2"
String_1 ???
谢谢。
对不起,我感到困惑。希望这更清楚。
所以,我决定在Point_2.x中添加Point_1.x并将总数添加到我的对话框中作为标签。
Named_Tuple_1 = namedtuple("Coordinates", ["x", "y", "z"], verbose=False, rename=False)
Point_1 = Named_Tuple_1(x=1, y=2, z=3)
Point_2 = Named_Tuple_1(x=4, y=5, z=6)
Point_3 = Named_Tuple_1(x=7, y=8, z=9)
def ADD_x_1():
Sum_of_x = Point_1.x + Point_2.x
My_Label_1 = Label(Dialog, text=Sum_of_x)
My_Label_1.pack()
Dialog = Tk()
My_Button_1 = Button(Dialog, text="Add x Value", command=ADD_x_1)
My_Button_1.pack()
Dialog.mainloop()
现在我想做同样的事情,但有一个用户决定添加哪个点。
def ADD_x_2():
First_Point_x = My_Entry_1.get().x
Second_Point_x = My_Entry_2.get().x
Sum_of_x = First_Point_x + Second_Point_x
My_Label_3 = Label(Dialog, text=Sum_of_x)
My_Label_3.pack()
Dialog = Tk()
My_Label_1 = Label(Dialog, text="Select first point")
My_Label_1.pack()
My_Entry_1 = Entry(Dialog, bd=2, width=10)
My_Entry_1.pack()
My_Label_2 = Label(Dialog, text="Select second point")
My_Label_2.pack()
My_Entry_2 = Entry(Dialog, bd=2, width=10)
My_Entry_2.pack()
My_Button_2 = Button(Dialog, text="Add x Value", command=ADD_x_2)
My_Button_2.pack()
Dialog.mainloop()
我的问题是My_Entry_1.get()和My_Entry_2.get()是字符串。我得到了错误AttributeError:'str'对象没有属性'x'。
所以我的问题是如何从My_Entry_1和My_Entry_2中获取字符串来访问x值?
对不起,再次混淆。
谢谢。
因为你有一个确切的名字,所以我会切换#3来使用'locals()''dict'在'eval'上。避免'eval'的安全风险。另外,在#2中不需要'globals',你只需直接使用'sys.modules [__ name __]','__name__'周围不需要引号,因为'__name__'总是存在于模块中(除非你已经对它进行了映射本地为上帝知道什么原因)。 – ShadowRanger
对不起。这就是我的意思。 My_Entry = Entry(对话框,宽度= 10).pack() – GrandJoss
@GrandJoss:像#1这样的东西几乎肯定是你想要做的。 – Gerrat