我们在事件回调中有一些代码,如下所示:
...
self.position.side = -self.position.side
self.update_with_board() # displays self.position graphically
ai_move = self.brain.get_move(self.position)
...
update() 被立即调用,但直到该ai_move
行才影响 GUI。
但是,当我这样做时:
...
self.position.side = -self.position.side
self.update_with_board() # displays self.position graphically
raw_input()
ai_move = self.brain.get_move(self.position)
...
当它要求输入时,它会立即以图形方式更新。我不知道该怎么做:也许是时髦的懒惰评估或我不知道的 tkinter 调度事情?如何让 GUI 以指定的顺序而不是延迟更新?
编辑:对不起,我没有使用内置update()
方法,而是我定义的一种绘制方法。我重命名它update_with_board()
,并看到相同的行为。
def update_with_board(self):
for i in range(8):
for j in range(8):
color = "gray" if (i+j) % 2 else "white"
self.canvas.create_rectangle(self.square * i, self.square * j, self.square * (i+1), self.square * (j+1), fill=color)
if self.position.board[8 * j + i] in self.ims.keys():
self.canvas.create_image(self.square * i + self.square/2,
self.square * j + self.square/2, image = self.ims[self.position.board[8 * j + i]])