tkinterで、canvasの図形を1秒刻みで色換えをしており、その処理を、
after(1000,func)としており、90回くらい繰り返しております。
終わって欲しいタイミングで、
after_cancelを入れているのですが、極たまにafter処理が残っていたのか、思うように止まらないときがあります。
そこで、
while trueを設け、例外処理で、after_cancelをしてエラーとなればafterが消えたと判断し、whileを抜けたとしているのですが、やはり、極たまに起きます。
強制的に削除できないものでしょうか?
def t1() global after_id def repeat_func(): global after_id canvasの色変更 frame1.update canvas.update_idletasks() # 描画更新 after_id = frame1.after(500, repeat_func) return repeat_func for a in b: ある処理 frame1.after_cancel(after_id) after_id=None thread3=threading.Thread(target=t1) thread3.start()
スレッドを使用しているのは、tkinterGUIを使用して、
for文を使用し、その結果をcanvasで色付けしているためです。
このスレッドが悪さしているということはないでしょうか。