清除文本小部件,用于每次按下按钮时输入新文本

时间:2021-04-07 14:12:24

标签: python-3.x tkinter tkinter-text

我正在尝试清除或重置文本框并存储新结果。基本上,每次按下按钮时,我都希望在存储新文本之前清空文本框。

在我的研究中,出现了以下线程,他似乎也有类似的目标,但我不确定如何将其应用到我的代码中。 TKinter - Clear text widget

我已经尝试了以下方法,但由于明显的原因它不起作用。不知道还有什么方法可以解决这个问题。

button = tk.Button(root, command=lambda: button_cmmd())

def button_cmmd():
    if len(text_widget_1.get("1.0", "end-1c")) <= 5:
        #I get descriptions - this portion works.
    else:
        text_widget_2.delete("1.0", END)

编辑 我工作的一半解决方案是:

def button_cmmd():
    if len(text_widget_2.get("1.0", "end-1c")) <= 2:
        text_widget_1.get("1.0", "end-1c"))
    else:
        text_widget_2.delete("1.0", "end-1c")

现在的一个小问题是,单击按钮一次将填充 text_box_2,第二次单击将删除该文本,因此您必须第三次单击它才能再次运行 .get

1 个答案:

答案 0 :(得分:0)

您可以使用 tkinter.StringVar 对象并将其传递给 textvariable 调用的 tkinter.Entry() 参数。

entry_var = tkinter.StringVar(root, value="default value")
entry = tkinter.Entry(root, textvariable=entry_var)
button = tkinter.Button(root, text="Clear", command=lambda: clear_entry(entry_var))

entry.pack()
button.pack()

def clear_entry(var):
    var.set("")

为了测试它,我只是在 IDLE 中运行它:

>>> import tkinter
>>> root = tkinter.Tk()
>>> entry_var = tkinter.StringVar(root, value="default value")
>>> def clear_entry(var):
    var.set("")

    
>>> entry = tkinter.Entry(root, textvariable=entry_var)
>>> button = tkinter.Button(root, text="Clear", command=lambda: clear_entry(entry_var))
>>> entry.pack()
>>> button.pack()
>>> root.mainloop()

点击前:

Before

点击后:

After