You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Tkinter点击按钮清空Entry组件报错:字符串无delete属性

问题解决:Tkinter Entry组件清空报错

错误原因

你代码里的EntryPlace = Entry(top,textvariable=user_entry).grid(row=0,column=0)这行存在问题——Tkinter的grid()方法返回值是None,所以EntryPlace实际指向的是None,而非Entry组件对象。当你调用EntryPlace.delete(0, END)时,自然会触发“对象没有delete属性”的报错。

修复方案

方案一:拆分组件创建与布局

将Entry对象的实例化和grid布局操作分开,让EntryPlace指向真正的Entry组件:

from tkinter import *

file=open(r'\Users\Armita\Desktop\new file\file_app.txt','a+')

def addline(): 
    file.write(user_entry.get() + '\n') 
    EntryPlace.delete(0, END)

def savechange(): 
    global file
    file.close() 
    file = open(r'\Users\Armita\Desktop\new file\file_app.txt','a+')

def saveandclose():
    file.close()
    top.destroy()

top = Tk() 
top.geometry('350x40') 
top.title('Tk')

user_entry = StringVar()
# 拆分创建与布局操作
EntryPlace = Entry(top,textvariable=user_entry)
EntryPlace.grid(row=0,column=0)

AddButton = Button(top,text='add line',command= addline).grid(row=0,column=1)

SaveButton=Button(top,text='save changes',command= savechange).grid(row=0,column=2)

CloseButton1=Button(top,text='save and close',command= saveandclose ).grid(row=0,column=3)

top.mainloop()

方案二:通过绑定的StringVar清空

既然已经用textvariable绑定了Entry组件,也可以直接修改这个变量的值来清空输入框:

def addline(): 
    file.write(user_entry.get() + '\n') 
    user_entry.set("")  # 将绑定变量设为空字符串,自动清空Entry

额外提示

Tkinter的所有布局方法(grid()、pack()、place())返回值都是None,所以创建组件时必须把实例化和布局操作分开执行,否则会丢失组件对象的引用,后续无法对组件进行任何操作。

内容的提问来源于stack exchange,提问作者armita1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 04:52:43