Как создать таймер во время работы Tkinter в этом же коде. Python
Нужно сделать так:
Работает Tkinter interface и вместе с этим идёт отсчёт 1 секунды. После этого происходит какое-то действие.
Когда пытаюсь так сделать, ничего не происходит.
Код в функции которая вызывается:
def autoc():
while True:
time.sleep(1)
click = click + 1
lbl.configure(text=int(click))
Ответы (2 шт):
Автор решения: Александр
→ Ссылка
Ну вот так
from tkinter import Tk, Label, Button, mainloop
from threading import Thread
import time
class App(Tk):
def __init__(self):
super().__init__()
self.label = Label(self, text="")
self.label.pack()
button = Button(self, text="запустить бесконечный цикл")
button.config(command=self.print)
button.pack()
self.update_clock()
def update_clock(self):
now = time.strftime("%H:%M:%S")
self.label.configure(text=now)
self.after(1000, self.update_clock)
def print(self):
def thread():
while True:
print("Поток безконечный цикл")
time.sleep(1)
Thread(target=thread).start()
def main():
app = App()
app.mainloop()
if __name__ == '__main__':
main()
Автор решения: DGDays
→ Ссылка
Основные задачи для таймера:
1)Сделать отсчёт времени
2)Вывести отсчёт в другой поток(чтобы GUI не зависал)
С первым вы замечательно справились, значит будем реализовывать второй пункт.
Вот такой код у меня получился
from threading import Thread
....
Thread(target = autoc).start() # Используйте для вызова функции в отдельный поток, тогда остальная часть окна не будет виснуть
....
def autoc():
global click
while True:
print("auto-click + 1")
time.sleep(1)
click += 1
lbl.configure(text=int(click))