0
我有一個例程,通過迷宮中的路徑動畫,使用Tkinter的after函數按順序繪製路徑中的步驟。我更新了每次調用時檢查的計數器變量,當我到達路徑末尾時,我重置了一些變量。這一切似乎工作正常,但這種方法線程安全嗎?每次after()調用都會以原子方式並按順序執行,即使之前的後續調用在下一個調用應該開始之前未完成?我在代碼的另一部分中使用這些變量來阻止用戶在第一個路徑仍在進行時渲染第二個路徑。有沒有更好的方法來做到這一點?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