現在、ゲームボードを印刷する土地クラスに以下のコードがあります。ゲームのアクションを保持する別のクラスがあるため、ゲームで何かが発生するたびにこの関数が呼び出されます。この時点で、クラスは新しいキャンバスを作成し、古いキャンバスを何度も何度も破棄します。キャンバスを破棄するのではなく、単にキャンバスを更新する方法はありますか。
def printBoard(self):
master = Tk()
w = Canvas(master, width=503, height=503)
w.pack()
for x, row in enumerate(self.a):
for y, cell in enumerate(row):
if self.a[x][y][1] == 'C':
w.create_rectangle([3 + 50 * y, 3 + 50 * x, 53 + 50 * y, 53 + 50 * x ], fill="black")
w.create_text(3 + 50 * y, 3 + 50 * x, anchor=NW, fill="white", text=self.a[x][y][0][1])
else:
if self.a[x][y][0][0] == 'f':
w.create_rectangle([3 + 50 * y, 3 + 50 * x, 53 + 50 * y, 53 + 50 * x ], fill="green")
w.create_text(3 + 50 * y, 3 + 50 * x, anchor=NW, fill="white", text=self.a[x][y][0][1])
elif self.a[x][y][0][0] == 'w':
w.create_rectangle([3 + 50 * y, 3 + 50 * x, 53 + 50 * y, 53 + 50 * x ], fill="blue")
w.create_text(3 + 50 * y, 3 + 50 * x, anchor=NW, fill="white", text=self.a[x][y][0][1])
elif self.a[x][y][0][0] == 'X':
w.create_rectangle([3 + 50 * y, 3 + 50 * x, 53 + 50 * y, 53 + 50 * x ], fill="brown")
w.create_text(3 + 50 * y, 3 + 50 * x, anchor=NW, fill="white", text=self.a[x][y][0][1])
elif self.a[x][y][0][0] == 's':
w.create_rectangle([3 + 50 * y, 3 + 50 * x, 53 + 50 * y, 53 + 50 * x ], fill="gray")
w.create_text(3 + 50 * y, 3 + 50 * x, anchor=NW, fill="white", text=self.a[x][y][0][1])
master.after(1000, lambda: master.destroy())
master.mainloop()