Как уничтожить мою метку tkinter после нескольких нажатий кнопок?

#tkinter

#tkinter

Вопрос:

Я работаю с приложением, в котором у меня была кнопка CALB, и в соответствии с приложением, когда я нажимаю кнопку CALB 1st, создается метка и отображается значение range_H, и если я нажму кнопку CALB 2 раза, она покажет значение off_set. Согласно моему требованию, метка должна быть уничтожена после нажатия клавиши ENTR. Моя проблема в том, что она работает с одним щелчком CALB, но не уничтожается после 2-го нажатия кнопки CALB. Вот мой код

 import os
import tkinter as tk

Dsel = 0
cal_c = 0
root = tk.Tk()
root.geometry("300x240")
range_High = tk.IntVar()
offset = tk.IntVar()
Dsell = tk.IntVar()
range_H = 32767
off_set = 0

file=open("D:data/file_log.txt","w")
if os.stat("D:data/file_log.txt").st_size==0:
    file.write("rangeHigh,offset,n")
file.write(str(range_H) ',' str(off_set))
file.flush()

def cal():
    global range_High,Dsel,cal_c
    cal_c = cal_c   1
    root.rangeLabel = tk.Label(root, textvariable=range_High)
    root.rangeLabel.grid(row=0)
    root.DLbl = tk.Label(root,textvariable=Dsell)
    root.DLbl.grid(row=0,column=1)
    if cal_c == 1:
        range_High.set(range_H)
    elif cal_c == 2:
        range_High.set(off_set)
    Dsell.set(Dsel)
   

def enter():
    global range_High
    file=open("D:data/file_log.txt","w")
    if os.stat("D:data/file_log.txt").st_size==0:
        file.write("rangeHigh,offset,n")
    file.write(str(range_H)   ','   str(off_set))
    file.flush()
    root.rangeLabel.destroy()
    root.DLbl.destroy()
def inc():
    
    #increment logic
    pass
def dec():
    
    #decrement logic
    pass

def digSelect():
    global Dsel
    Dsel = Dsel 1
    if Dsel > 5:
        Dsel = 0
    Dsell.set(Dsel)



root.Bt1=tk.Button(root,text="calb",bg="red",command=cal)
root.Bt1.pack()
root.Bt1.place(x=200,y=50)
root.Bt2=tk.Button(root,text="entr",bg="red",command=enter)
root.Bt2.pack()
root.Bt2.place(x=200,y=80)
root.Bt3=tk.Button(root,text="incr",bg="red",fg="white",command=inc)
root.Bt3.pack()
root.Bt3.place(x=200,y=110)
root.Bt4=tk.Button(root,text="decr",bg="red",fg="white",command=dec)
root.Bt4.pack()
root.Bt4.place(x=200,y=140)
root.Bt5=tk.Button(root,text="digt",bg="red",fg="white",command=digSelect)
root.Bt5.pack()
root.Bt5.place(x=200,y=170)


root.mainloop()
  

Спасибо

Комментарии:

1. На самом деле вы создали root.rangeLabel и root.DLbl дважды, когда calb кнопка нажата дважды. При нажатии кнопки удаляется только последний их экземпляр entr . Вы можете переместить создание двух меток внутри if cal_c == 1 блока.

2. @acw1668, тогда внутри if cal_c == 2 блока я должен создать новую метку, чтобы показать значение смещения?

3. Не нужно, поскольку вы обновили IntVar, на range_High который ссылается root.rangeLabel .

4. @acw1668, теперь мой поток приложений стал 1-й кнопкой Calb , отрегулируйте range_H значение и нажмите entr , чтобы сохранить и снова настроить off_set значение, я должен следовать той же процедуре.