我正在尝试为我用Python制作的othello游戏制作GUI。下面的for循环仅显示第一行中的片段。一旦它再次遍历嵌套的for循环,就不会在任何下一行上显示任何碎片。是什么阻止了这些其他部分被绘制?
def _draw_pieces(self) -> None:
self._canvas.delete(tkinter.ALL)
rows = int(self._width/RADIUS)
columns = int(self._height/RADIUS)
x_frac = 0
y_frac = 0
for row in self._board:
for column in row:
if column == NONE:
self._draw_neutral_piece((x_frac/rows),(y_frac/columns))
x_frac += 1
elif column == BLACK:
self._draw_black_piece((x_frac/rows),(y_frac/columns))
x_frac += 1
elif column == WHITE:
self._draw_white_piece((x_frac/rows),(y_frac/columns))
x_frac += 1
else:
x_frac = 0
y_frac+= 1
函数_draw_black_piece,_draw_white_piece等基本上都是一样的。它们采用小数坐标并绘制一块颜色。坐标由调整后的电路板大小决定。电路板的默认大小是每列中的片段数和行乘以RADIUS常量(设置为100)。
def _draw_black_piece(self, x_frac: float, y_frac: float) -> None:
x_radius = self._canvas.winfo_width()/len(self._board[0])
y_radius = self._canvas.winfo_height()/len(self._board)
x1 = self._canvas.winfo_width() * x_frac
x2 = self._canvas.winfo_width() * x_frac + x_radius
y1 = self._canvas.winfo_height() * y_frac
y2 = self._canvas.winfo_height() * y_frac + y_radius
self._canvas.create_oval(x1, y1, x2, y2, fill = 'black')
以下是董事会:
self._board = [[无,黑,无,白],[无,黑,白,无],[无,白,黑,无] [无,无,无,无]]