提问者:小点点

tkinter-当按钮被第二次点击时如何清除标签?


我正在试图清除屏幕上的输出,当有人再次点击按钮时。

def eval_click():
    if entry_buysell.get().lower() == 'b':
        stoploss = (float(entry_price.get()) - float(entry_stop_loss.get()))
        take_profit = (float(entry_profit.get()) - float(entry_price.get()))
        ratio = take_profit/stoploss
        if ratio > 2.5:
            output = Label(reasons_window,text="TRADE, risk seems ok.")
            output.grid(row=1, column=2)
        else:
            output = Label(reasons_window,text="DON'T TRADE")
            output.grid(row=1, column=2)

我曾尝试使用output.destroy(),它基本上是在生成文本后立即销毁文本。

我不知道正确的程序是什么。 用户可能会对输入字段和输出开关进行更改,但在最后一条消息上会被覆盖。


共2个答案

匿名用户

您可以先将按钮点击保存到一个变量,以检查用户按了多少次按钮,在您的情况下是2次,然后在函数中检查该变量。 现在你有两个选择

>

  • 如果您不想再次使用该标签,那么只需使用l1.destroy()将其删除,并在if条件中添加l1.winfo_exists()以检查小部件是否存在。

    if track_clicks > 0 and l1.winfo_exists():
        l1.destroy()
    

    如果您希望稍后在程序中使用该标签,那么只需使用pack_forget()grid_forget()/place_forget()分别对网格和位置几何图形管理器进行解包。

    if track_clicks > 0:
        l1.pack_forget()
    

    您还可以执行l1.config(text=''),删除标签的文本。

    下面是一个示例:

    import tkinter as tk
    
    track_clicks = 0
    def click():
        global track_clicks
        if track_clicks > 0 and l1.winfo_exists():
            l1.destroy() # destroys the label
        track_clicks += 1
    
    root = tk.Tk()
    
    l1 = tk.Label(root, text="DON'T TRADE")
    l1.pack()
    b1 = tk.Button(root, text='Click :)', command=click)
    b1.pack()
    
    root.mainloop()
    

  • 匿名用户

    请尝试以下操作:

    output.delete('1.0', END)
    

    假设您使用的是Python3?