Зависает кнопка в tkinter при использовании while True
В интерфейсе вводится время, подтверждается нажатием кнопки Ok и по его достижении выполняется URL-запрос. Программа работает, запрос выполняется, но до этого момента приложение висит. В чём моя ошибка?
import tkinter as tk
from tkinter import ttk
import datetime
import urllib.request
from time import sleep
def timer():
start_time=entry_1.get()
while True:
if str(start_time) == datetime.datetime.today().strftime("%H.%M"):
urllib.request.urlopen('http://localhost:8088/API/?Function=StartRecording')
break
sleep(1)
root=tk.Tk()
label_1= ttk.Label(root, text="Начать запись в (формат 00.00) ")
label_1.pack(side="left")
entry_1= ttk.Entry(root)
entry_1.pack(side="left")
greet_button= ttk.Button(root, text="Ok", command=timer)
greet_button.pack(side="left")
quit_button=ttk.Button(root, text="Quit", command=root.destroy)
quit_button.pack(side="left")
root.mainloop()
Ответы (1 шт):
Автор решения: svetotehnik
→ Ссылка
Помог import threading и замена command=timer на:
command=lambda: threading.Thread(target=timer, daemon=True).start()