我试图让用户输入五个值,单击一个按钮来完成这些值,然后将这些值写入文件。代码:
def mb_add_gui(self):
self.optionsLabel.grid_forget()
global a,b,c,d,e
a = StringVar()
b = StringVar()
c = StringVar()
d = StringVar()
e = StringVar()
add_gui_entry_brand = Entry(self.startLabel, textvariable=a).grid(row=0, column=1)
add_gui_entry_model = Entry(self.startLabel, textvariable=b).grid(row=1, column=1)
add_gui_entry_serial = Entry(self.startLabel, textvariable=c).grid(row=2,column=1)
add_gui_entry_work = Entry(self.startLabel, textvariable=d).grid(row=3, column=1)
add_gui_entry_ram = Entry(self.startLabel,textvariable=e).grid(row=4, column=1)
add_gui_entry_brand_text = Label(self.startLabel, text="Brand:").grid(row=0, column=0)
add_gui_entry_model_text = Label(self.startLabel, text="Model:").grid(row=1, column=0)
add_gui_entry_serial_text = Label(self.startLabel, text="Serial Number:").grid(row=2, column=0)
add_gui_entry_work_text = Label(self.startLabel, text="Is it working?:").grid(row=3, column=0)
add_gui_entry_ram_text = Label(self.startLabel, text="RAM Type:").grid(row=4, column=0)
def final_data():
global data
data = [a.get(), b.get(),c.get(),d.get(),e.get()]
return data
finalize = Button(self.startLabel, text="Add!", command=final_data).grid(row=5, columnspan=2)
'''允许添加主板'''
def mb_add():
with open("motherboards.txt", "a") as file:
file.write("{0}, {1}, {2}, {3}, {4}".format(data[0].upper(), data[1].upper(), data[2].upper(), data[3].upper(), data[4].upper()))
file.write("\n")
print("Motherboard added!")
file.flush()
file.close()
return
“”但是,当我运行它时,我得到一个错误,说全局数据变量未定义
答案 0 :(得分:0)
好的,所以你已经创建了一个全局变量,但是需要在你想要使用它的所有函数中将它定义为全局变量(因此python知道你希望使用那个全局变量,而不是另一个相同的命名局部变量,它顺便找不到)。您也在创建变量,例如finalize
,然后将它们放在同一行,这样他们就会返回Nonetype
,您必须将它们放在下一行,例如
finalize = Button(self.startLabel, text="Add!", command=final_data)
finalize.grid()
要解决您的问题,您必须将此行添加到mb_add
函数:
global data
希望有所帮助!