第二次单击按钮时如何清除标签?



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

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 次,然后在函数中检查该变量。现在您有两个选择

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

    if track_clicks > 0 and l1.winfo_exists():
    l1.destroy()
    
  2. 如果您想稍后在程序中使用该标签,则只需分别使用pack_forget()grid_forget()/place_forget()网格放置几何管理器解压缩即可。

    if track_clicks > 0:
    l1.pack_forget()
    
  3. 您还可以执行删除标签文本的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?

最新更新