Простой скрипт таймера на основе Python не работает должным образом

1

Я тестирую скрипт 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()

Выходной сигнал не показывает последовательное уменьшение введенного значения. Мне нужны предложения.

Так выглядит таймер.

Изображение 174551

  • 0
    Какими методами вы пытались решить проблему?
Теги:
python-3.x
timer

1 ответ

1
Лучший ответ

Вам нужно 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 - с ней).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню