#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
значение, я должен следовать той же процедуре.