【问题标题】:'NoneType' object has no attribute 'delete' [duplicate]“NoneType”对象没有属性“删除”[重复]
【发布时间】:2023-03-28 13:47:02
【问题描述】:

我无法清除输入框中的文本 item_rate1

在另一个框中,它会删除文本,但在我的第二个框中,它根本不清除。 显示错误:

“NoneType”对象没有“删除”属性

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).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()

【问题讨论】:

  • 请发布完整的回溯。
  • None.delete()

标签: python tkinter attributeerror nonetype


【解决方案1】:

Entry 上的 grid() 方法不返回对象引用(它返回 None)

所以

item_rate1 = Entry(window,textvariable=rate1).grid(row=1,column=0,sticky="w",ipadx=13,padx=35,)

将 item_rate1 设置为 None,这会导致 AttributeError:“NoneType”对象没有“删除”属性 在回调中抛出

item_rate1 = Entry(window,textvariable=rate1)
item_rate1.grid(row=1,column=0,sticky="w",ipadx=13,padx=35,)

而不是你的一行来解决问题

【讨论】:

  • 替代但不建议的选项是这样做(Python 3.8+):(item_rate1 := Entry(window,textvariable=rate1)).grid(row=1,column=0,sticky="w",ipadx=13,padx=35,),这使它保持在一行中(可能不符合 PEP 8,难以阅读和东西(这就是为什么不建议))但这也可以
  • 与其回答这个问题,不如留下它,因为有人已经投票关闭它。这样我们就不会在 stackoverflow 上获得大量重复信息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-20
  • 2019-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-01
相关资源
最近更新 更多