无法从tkinter Entry()获取数据

2024-09-29 17:19:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试允许用户输入五个值,单击按钮完成这些值,然后将这些值写入文件。代码:

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

“”“但是,当我运行此命令时,出现一个错误,说明全局数据变量未定义。”“”


Tags: textselfadddatagetguicolumnlabel
1条回答
网友
1楼 · 发布于 2024-09-29 17:19:43

好的,您已经创建了一个全局变量,但是需要在所有要使用它的函数中将它定义为全局变量(这样python就知道您希望使用这个全局变量,而不是另一个它无意中找不到的同名局部变量)。另外,您正在创建变量,例如finalize,然后将它们放在同一行上,因此它们将返回Nonetype,您必须将它们放在下一行上,例如

finalize = Button(self.startLabel, text="Add!", command=final_data)
finalize.grid()

要解决问题,必须将此行添加到mb_add函数中:

global data

希望有帮助!你知道吗

相关问题 更多 >

    热门问题