求助:Tkinter中CLEAR DATA按钮无法清除输入数据
问题分析与解决办法
核心问题
- 你定义的全局
entry = StringVar()完全没和任何输入框绑定,和界面里的fnameEntry、lnameEntry等输入框毫无关联,调用entry.delete()根本不会影响输入框内容。 StringVar对象没有delete()方法,这个方法是Entry组件的专属方法,你用错了调用对象。- 你用了Text组件的索引格式
1.0,但Entry组件的起始索引是0,清空应该用0和END。
解决方案一:通过绑定的StringVar清空
先确保所有输入框绑定的变量都是tk.StringVar()实例,然后修改cleardata函数,把每个变量的值设为空字符串:
# 提前定义所有绑定的StringVar(放在全局或btn1function外) firstname = tk.StringVar() lastname = tk.StringVar() address1 = tk.StringVar() connum = tk.StringVar() email1 = tk.StringVar() pname = tk.StringVar() gender1 = tk.StringVar() breed1 = tk.StringVar() birth1 = tk.StringVar() problem1 = tk.StringVar() def cleardata(): firstname.set("") lastname.set("") address1.set("") connum.set("") email1.set("") pname.set("") gender1.set("") breed1.set("") birth1.set("") problem1.set("")
解决方案二:通过Entry组件实例清空
如果想直接操作输入框,可以把所有Entry组件保存到一个列表,在cleardata里遍历清空:
# 定义全局列表存储Entry组件 entries_list = [] def cleardata(): for entry in entries_list: entry.delete(0, tk.END) def btn1function(): global entries_list entries_list = [] # 每次打开窗口重置列表 top = tkinter.Toplevel(root) top.title("ADD RECORDS") frame = tk.Frame(top) # ... 背景图等原有代码不变 ... 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) entries_list.append(fnameEntry) # 添加到列表 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) entries_list.append(lnameEntry) # 添加到列表 # ... 其他所有输入框都按此方式添加到entries_list ... # 按钮代码不变
内容的提问来源于stack exchange,提问作者Shukuchi Hikaru
相关产品推荐
相关产品推荐

