0

現在、ゲームボードを印刷する土地クラスに以下のコードがあります。ゲームのアクションを保持する別のクラスがあるため、ゲームで何かが発生するたびにこの関数が呼び出されます。この時点で、クラスは新しいキャンバスを作成し、古いキャンバスを何度も何度も破棄します。キャンバスを破棄するのではなく、単にキャンバスを更新する方法はありますか。

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()
4

1 に答える 1