0

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

在我的研究中,出现了以下线程,他似乎有类似的目标,但是我不确定如何将其应用于我的代码。TKinter - 明文小部件

我尝试了以下方法,但由于明显的原因它不起作用。不知道如何解决这个问题。

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再次运行。

4

1 回答 1

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()

点击前:

前

点击后:

后

于 2021-04-07T17:39:12.803 回答