Tkinter Entry调用delete方法报NoneType无该属性错误如何解决
问题原因
Tkinter中所有布局方法(grid()/pack()/place())的返回值都是None,你在创建第二个Entry控件时直接链式调用了grid()方法,相当于把grid()的返回值None赋值给了item_rate1变量,而非Entry实例本身,所以调用delete方法时会抛出NoneType无对应属性的错误。
第一个Entry可以正常运行,是因为你做了两步拆分:先把Entry实例赋值给text变量,再单独调用grid()方法做布局,变量保存的是正确的控件对象。
修复方案
把第二个Entry的创建和布局拆分为两步即可,修改后完整代码如下:
from tkinter import * window= Tk() window.geometry("650x250") def clear_text(): text.delete(0, END) item_rate1.delete(0, END) rate1 = StringVar() rate1.set("0") text= Entry(window, width=40) text.grid(row=0,column=0) # 拆分控件创建和布局两步 item_rate1 = Entry(window,textvariable=rate1) item_rate1.grid(row=1,column=0,sticky="w",ipadx=13,padx=35,) Button(window,text="Clear", command=clear_text, font=('Helvetica bold',10)).grid(row=10,column=0) window.mainloop()
注意事项
- 所有Tkinter控件的创建和布局操作都不要写在同一行做链式调用,否则变量无法拿到正确的控件实例。
内容的提问来源于stack exchange,提问作者Mohd.Imthiyas babu
相关产品推荐
相关产品推荐

