Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在Tkinter中按下按钮后,如何清除输入小部件?_Python_User Interface_Widget_Tkinter - Fatal编程技术网

Python 在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,“”) 你能再发一点代码吗?在

我试图在用户使用Tkinter按下按钮后清除
条目
小部件

我尝试使用
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()