私は、Tkinterのafter関数を使用してパス内のステップを順次プロットする迷路を通るパスをアニメートするルーチンを持っています。各呼び出しでチェックしているカウンタ変数を更新し、パスの最後に到達すると、いくつかの変数をリセットします。それはすべてうまくいくようですが、このアプローチはスレッドセーフですか?前の呼び出しが完了していなくても、次の呼び出しが開始される前に、各after()呼び出しがアトミックかつ順番に実行されますか?これらの変数をコードの別の部分で使用して、最初のものがまだ進行している間にユーザーが2番目のパスを表示しないようにします。これを行うより良い方法はありますか?呼び出し後のTkinterアニメーション - スレッドの安全性
def markPath(self):
if self.canvas is None or self.path is None:
return
for k,i in enumerate(self.path[1:-1]):
window.after(20*k,self.placeMarker,i,'#ff0000')
def placeMarker(self,p,value):
x0 = p[0]*self.scale+Maze.offset+4
y0 = p[1]*self.scale+Maze.offset+4
x1 = x0 + 4
y1 = y0 + 4
self.canvas.create_rectangle(y0,x0,y1,x1,fill=value)
if self.path is not None and (self.counter == len(self.path)-2):
self.path = None
self.start = None
self.end = None
self.counter = 0
else:
self.counter += 1
ありがとうございました。これは私の質問に答える。 – krishnar