我创建的 “清除数据” 按钮有问题,由于我是 Tkinter 的新手,我想知道是否有人可以帮助我。我试图让程序在单击按钮后清除用户数据输入,但到目前为止,我只是无法弄清楚这一点。代码如下所示。我试了好久,还是没搞明白。
global entry
entry = StringVar()
def cleardata():
entry.delete(1.0, END)
def btn1function():
top = tkinter.Toplevel(root)
top.title("ADD RECORDS")
frame = tk.Frame(top)
bg = ImageTk.PhotoImage(file="latestadrec.png")
labl = tk.Label(frame, image=bg)
labl.img = bg
labl.place(relx=0.5, rely=0.5, anchor='center')
fname = tk.Label(frame, text="First Name:", font=('Bold', 16))
fname.place(x=50, y=400)
fnameEntry = tk.Entry(frame, textvariable=firstname, font=('Bold', 16))
fnameEntry.place(x=220, y=400, width=180)
lname = tk.Label(frame, text="Last Name:", font=('Bold', 16))
lname.place(x=50, y=450)
lnameEntry = tk.Entry(frame, textvariable=lastname, font=('Bold', 16))
lnameEntry.place(x=220, y=450, width=180)
address = tk.Label(frame, text="Address:", font=('Bold', 16))
address.place(x=50, y=500)
addressEntry = tk.Entry(frame, textvariable=address1, font=('Bold', 16))
addressEntry.place(x=220, y=500, width=180)
conum = tk.Label(frame, text="Contact Number:", font=('Bold', 16))
conum.place(x=50, y=550)
conumEntry = tk.Entry(frame, textvariable=connum, font=('Bold', 16))
conumEntry.place(x=220, y=550, width=180)
email = tk.Label(frame, text="Email:", font=('Bold', 16))
email.place(x=50, y=600)
emailEntry = tk.Entry(frame, textvariable=email1, font=('Bold', 16))
emailEntry.place(x=220, y=600, width=180)
petname = tk.Label(frame, text="Pet name:", font=('Bold', 16))
petname.place(x=650, y=400)
petnameEntry = tk.Entry(frame,textvariable=pname, font=('Bold', 16))
petnameEntry.place(x=790, y=400, width=180)
gender = tk.Label(frame, text="Gender:", font=('Bold', 16))
gender.place(x=650, y=450)
genderEntry = tk.Entry(frame,textvariable=gender1, font=('Bold', 16))
genderEntry.place(x=790, y=450, width=180)
breed = tk.Label(frame, text="Breed:", font=('Bold', 16))
breed.place(x=650, y=500)
breedEntry = tk.Entry(frame,textvariable=breed1, font=('Bold', 16))
breedEntry.place(x=790, y=500, width=180)
birth = tk.Label(frame, text="Birth Date:", font=('Bold', 16))
birth.place(x=650, y=550)
birthEntry = tk.Entry(frame,textvariable=birth1, font=('Bold', 16))
birthEntry.place(x=790, y=550, width=180)
problem = tk.Label(frame, text="Problem:", font=('Bold', 16))
problem.place(x=650, y=600)
problemEntry = tk.Entry(frame,textvariable=problem1, font=('Bold', 16))
problemEntry.place(x=790, y=600, width=180)
button = tk.Button(frame, text="SUBMIT DATA", command=savefile, font=('Bold', 14))
button.place(x=300, y=700)
button2 = tk.Button(frame, text="CLEAR DATA", command=cleardata, font=('Bold', 14))
button2.place(x=550, y=700)
frame.pack(pady=10)
frame.pack_propagate(False)
frame.configure(width=1000, height=800)
如果您要删除文本,则必须使用
delete
小部件的 Entry
方法,最好将所有条目放入列表中并循环遍历它们,而不是逐一执行。
def cleardata():
for ent in ent_list:
ent.delete(0, 'end')
def btn1function():
global ent_list
...
ent_list = [fnameEntry, lnameEntry, ...]
或者您也可以在主要部分(函数外部)中创建列表,然后使用其
append()
方法将每个条目添加到列表中。第一个解决方案可能代码更少并且更具可读性。
或者如果您想避免全球化列表,则将列表作为参数传递:
def cleardata(ent_list):
for ent in ent_list:
ent.delete(0, 'end')
def btn1function():
...
ent_list = [fnameEntry, lnameEntry, ...]
button2 = tk.Button(..., command=lambda: cleardata(ent_list))