Python 在Tkinter中按下按钮后,如何清除输入小部件?
我试图在用户使用Tkinter按下按钮后清除Python 在Tkinter中按下按钮后,如何清除输入小部件?,python,user-interface,widget,tkinter,Python,User Interface,Widget,Tkinter,我试图在用户使用Tkinter按下按钮后清除条目小部件 我尝试使用ent.delete(0,END),但是我得到一个错误,说字符串没有delete属性 这是我的代码,我在real.delete(0,END)上遇到错误: 我不清楚你的问题。从,它 似乎你只需要在你调用delete之后做一个赋值。 要向小部件添加条目文本,请使用insert方法。要替换当前文本,可以在插入新文本之前调用delete e=条目(主) e、 包() e、 删除(0,结束) e、 插入(0,“”) 你能再发一点代码吗?在
条目
小部件
我尝试使用ent.delete(0,END)
,但是我得到一个错误,说字符串没有delete属性
这是我的代码,我在real.delete(0,END)
上遇到错误:
我不清楚你的问题。从,它 似乎你只需要在你调用delete之后做一个赋值。 要向小部件添加条目文本,请使用insert方法。要替换当前文本,可以在插入新文本之前调用delete
e=条目(主)
e、 包()
e、 删除(0,结束)
e、 插入(0,“”)
你能再发一点代码吗?在浏览了一下之后,我找到了下面的代码,它除了显示一个文本字段并在按下
“clear text”
按钮时将其清除外,什么都不做:
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()
real
获取值ent.get()
,该值只是一个字符串。它不知道它从哪里来,也没有办法影响小部件
在条目小部件本身上调用.delete()
,而不是real.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))
试试这个:
import os
os.system('clear')
首先,确保文本已启用,然后删除标记,然后删除内容
myText.config(state=NORMAL)
myText.tag_delete ("myTags")
myText.delete(1.0, END)
当文本为“禁用”时,删除不起作用,因为文本字段处于只读模式。您应继续执行
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()
这将解决您的问题如果上述任何一项都不起作用,您可以使用此-> idAssignedToEntryWidget.delete(first=0,last=UpperLimitAssignedToEntryWidget) 例如-> 分配的id为=en,则 删除(第一个=0,最后一个=100)
输入是在条目中设置textvariable,它是字符串变量,当我将字符串变量的文本设置为“”时,这将清除条目中的文本,只需定义一个函数并将组合框的值设置为空/空或任何您想要的值。尝试以下方法
def Reset():
cmb.set("")
此处,cmb
是一个变量,您已在其中分配了组合框。现在在按钮中调用该函数,例如
btn2 = ttk.Button(root, text="Reset",command=Reset)
如果您使用的是Python3.x,那么必须使用 txt_entry=条目(根) txt_entry.pack()
txt_entry.delete(0,tkinter.END)如果您添加打印代码来检查real的类型,您将看到real是一个字符串,而不是一个条目,因此没有delete属性
def res(real, secret):
print(type(real))
if secret==eval(real):
showinfo(message='that is right!')
real.delete(0, END)
>> output: <class 'str'>
它应该可以工作。您可以提供参数END(或“END”),而不是计算数据的长度。既然你说它不起作用,但没有定义“不起作用”(即:你有没有出错,或者它是无声地失败了?),我猜你用了一个不合格的“结束”。试试“Tkinter.END”。当我在上面的代码中使用它时,效果很好。@Bryan:啊,我只是使用了END,而不是Tkinter.END(教程使用了
from…import
而不是just import)。谢谢修复在代码中。我希望按钮同时执行两个操作。第一个是执行随机操作,第二个是清除entryNote,如果这样做,EntryWidget的状态必须正常。如果您使用的是Python 3.x版本,您必须更加小心地清除输入框-e.delete(0,tkinter.END)答案“似乎您只需要在调用delete后执行一个赋值”并不能回答“如何清除输入小部件”的问题。不,这绝对不起作用。这将清除屏幕,而不是窗口中的小部件。这与问题无关。这与问题无关Python
需要缩进:)这毫无意义
btn2 = ttk.Button(root, text="Reset",command=Reset)
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()