我遇到了一个问题,我的 Tkinter UI 在 afor loop运行时变得完全卡住并且无法交互。我的示例代码在循环中打印“循环”,并且 UI 上有一个“取消”按钮应该停止循环,但是由于我无法单击“取消”按钮,因此无法停止循环. 所以我的问题是如何tkinter在循环运行时使我的UI 可用。这是示例代码:
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()
德玛西亚99
慕码人8056858
相关分类