У меня проблема с тем, что мой пользовательский интерфейс Tkinter полностью зависает и неинтерактивен во время работы for loop
.Мой пример кода печатает «Цикл», пока он находится в цикле, и на интерфейсе пользователя есть кнопка «Отмена», которая должна остановить цикл, но так как я не могу нажать кнопку «Отмена», цикл не может быть остановлен,Поэтому мой вопрос заключается в том, как сделать мой tkinter
пользовательский интерфейс пригодным для использования во время выполнения цикла.Вот пример кода:
from tkinter import*
import time
root = Tk()
i=10
flag = False
def loop():
flag = True
for i in range(100):
if flag == True:
time.sleep(0.5)
print("Looping")
def canc():
flag = False
btn = Button(root, text="Start Loop", command=loop).pack()
cncl = Button(root, text="Cancel", command=canc).pack()
root.mainloop()
Я попытался создать новый поток для функции loop
, но это не работает.
Обновлен код, пользовательский интерфейс реагирует, но при нажатии отмены ничего не происходит:
from tkinter import*
import threading
import time
root = Tk()
i=10
flag = False
def loop():
flag = True
for i in range(10):
if flag == True:
time.sleep(0.5)
print("Looping")
def run():
threading.Thread(target=loop).start()
def canc():
flag = False
btn = Button(root, text="Start Loop", command=run).pack()
cncl = Button(root, text="Cancel", command=canc).pack()
root.mainloop()