我正在尝试在用户使用Tkinter按下按钮后清除Entry
小部件。
我尝试使用ent.delete(0, END)
,但我收到一条错误消息,指出字符串没有 delete 属性。
这是我的代码,我在real.delete(0, END)
上收到错误:
secret = randrange(1,100)
print(secret)
def res(real, secret):
if secret==eval(real):
showinfo(message='that is right!')
real.delete(0, END)
def guess():
ge = Tk()
ge.title('guessing game')
Label(ge, text="what is your guess:").pack(side=TOP)
ent = Entry(ge)
ent.pack(side=TOP)
btn=Button(ge, text="Enter", command=lambda: res(ent.get(),secret))
btn.pack(side=LEFT)
ge.mainloop()
答案 0 :(得分:38)
在Introduction to Tkinter稍微探讨了一下后,我想出了下面的代码,除了显示文本字段并按下"Clear text"
按钮时清除它,它什么都不做:< / p>
import tkinter as tk
class App(tk.Frame):
def __init__(self, master):
tk.Frame.__init__(self, master, height=42, width=42)
self.entry = tk.Entry(self)
self.entry.focus()
self.entry.pack()
self.clear_button = tk.Button(self, text="Clear text", command=self.clear_text)
self.clear_button.pack()
def clear_text(self):
self.entry.delete(0, 'end')
def main():
root = tk.Tk()
App(root).pack(expand=True, fill='both')
root.mainloop()
if __name__ == "__main__":
main()
答案 1 :(得分:8)
ent.delete(0, END)
是对条目小部件的正确引用, ent
是正确的答案。如果您收到您所说的错误,则代码中会出错。如果您无法自己发现错误,则需要向我们展示代码。
答案 2 :(得分:4)
real
获取的值ent.get()
只是一个字符串。它不知道它来自何处,也无法影响小部件。
而不是real.delete()
,请在条目小部件本身上调用.delete()
:
def res(ent, real, secret):
if secret == eval(real):
showinfo(message='that is right!')
ent.delete(0, END)
def guess():
...
btn = Button(ge, text="Enter", command=lambda: res(ent, ent.get(), secret))
答案 3 :(得分:2)
我不清楚你的问题。来自http://effbot.org/tkinterbook/entry.htm#patterns,它 看来你只需要在调用删除后进行一项任务。 要向窗口小部件添加条目文本,请使用insert方法。要替换当前文本,可以在插入新文本之前调用delete。
e = Entry(master)
e.pack()
e.delete(0, END)
e.insert(0, "")
你可以发布更多代码吗?
答案 4 :(得分:0)
首先,确保启用了文本,然后删除标签,然后删除内容。
myText.config(state=NORMAL)
myText.tag_delete ("myTags")
myText.delete(1.0, END)
当文本为&#34; DISABLE&#34;时,删除不起作用,因为文本字段处于只读模式。
答案 5 :(得分:0)
您应继续ent.delete(0,"end")
而不是使用'END',在引文中使用'end'。
secret = randrange(1,100)
print(secret)
def res(real, secret):
if secret==eval(real):
showinfo(message='that is right!')
real.delete(0, END)
def guess():
ge = Tk()
ge.title('guessing game')
Label(ge, text="what is your guess:").pack(side=TOP)
ent = Entry(ge)
ent.pack(side=TOP)
btn=Button(ge, text="Enter", command=lambda: res(ent.get(),secret))
btn.pack(side=LEFT)
ge.mainloop()
这将解决您的问题
答案 6 :(得分:0)
def clear():
global input
abc =
input.set(abc)
root = Tk()
input = StringVar()
ent = Entry(root,textvariable = input,font=('ariel',23,'bold'),bg='powder blue',bd=30,justify='right').grid(columnspan=4,ipady=20)
Clear = Button(root,text="Clear",command=clear).pack()
输入是在条目中设置textvariable,它是字符串变量,当我将字符串变量的文本设置为“”时,这将清除条目中的文本
答案 7 :(得分:0)
只需定义一个函数,然后将组合框的值设置为空/空或任何您想要的值即可。请尝试以下操作。
def Reset():
cmb.set("")
在这里,cmb
是一个变量,您已在其中分配了组合框。现在,在
btn2 = ttk.Button(root, text="Reset",command=Reset)
答案 8 :(得分:0)
如果使用的是Python 3.x,则必须使用
txt_entry =条目(根)
txt_entry.pack()
txt_entry.delete(0,tkinter.END)
答案 9 :(得分:0)
如果添加打印代码以检查real的类型,您将看到real是一个字符串,而不是Entry,因此没有delete属性。
def res(real, secret):
print(type(real))
if secret==eval(real):
showinfo(message='that is right!')
real.delete(0, END)
>> output: <class 'str'>
secret = randrange(1,100)
print(secret)
def res(real, secret):
if secret==eval(real):
showinfo(message='that is right!')
ent.delete(0, END) # we call the entry an delete its content
def guess():
ge = Tk()
ge.title('guessing game')
Label(ge, text="what is your guess:").pack(side=TOP)
global ent # Globalize ent to use it in other function
ent = Entry(ge)
ent.pack(side=TOP)
btn=Button(ge, text="Enter", command=lambda: res(ent.get(),secret))
btn.pack(side=LEFT)
ge.mainloop()
应该可以。
答案 10 :(得分:-1)
如果上述方法均无效,则可以使用this->
idAssignedToEntryWidget.delete(first = 0,last = UpperLimitAssignedToEntryWidget)
例如->
id分配的是= en然后
en.delete(first = 0,last = 100)
答案 11 :(得分:-6)
试试这个:
import os
os.system('clear')