Я тестирую скрипт Python для простого таймера, но он ничего не показывает в окне Tkinter.
import time
from tkinter import *
def clicked():
val = int(val_Box.get())
val1 = 0
global display_Time
while val1 < val:
display_Time.configure(text=str(val))
display_Time = Label(window,text="",fg="Blue")
display_Time.grid(column=10,row=10)
time.sleep(1)
val -= 1
display_Time.configure(text="Timer Finished")
window = Tk()
window.title("Simple Timer App")
window.geometry("300x200")
clock_Time = Label(window,text= "Enter Clock Time",fg="Green")
clock_Time.grid(column=0,row=0)
val_Box = Entry(window,width = 10,bg = "Yellow")
val_Box.grid(column=1,row=0)
display_Time = Label(window,text="" ,fg="Blue")
display_Time.grid(column=2,row=10)
start_Button = Button(window,text = "START",fg = "Blue",command = clicked)
start_Button.grid(column=0,row=10)
window.mainloop()
Выходной сигнал не показывает последовательное уменьшение введенного значения. Мне нужны предложения.
Так выглядит таймер.
Вам нужно update
окно, чтобы сделать изменения эффективными. Вы можете это сделать, вызвав window.update()
. Кроме того, вы переписываете ярлык, который действует как ваш таймер, во время цикла while. Для этого нет оснований. Таким образом, вы можете безопасно удалить соответствующие две строки. Эффективно переписано в while
цикл должен выглядеть следующим образом:
while val1 < val:
display_Time.configure(text=str(val))
window.update()
time.sleep(1)
val -= 1
Также обратите внимание, что функция clicked
блокирует ваш поток графического интерфейса до окончания таймера. Возможно, более целесообразно запустить отдельный поток таймера, например, from threading import Timer
(проверьте этот ответ на то, как многократно выполнять задачу - например, обновление GUI - с ней).