我已經創建了這樣的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