擅长:python、mysql、java
<p>在<code>for</code>循环中,为每个新按钮指定相同的名称<code>gameButton</code>。这意味着只有最近的按钮保存到变量中,在本例中是右下角的按钮。在</p>
<p>当您说<code>row = gameButton.grid_info()['row']</code>和<code>column = gameButton.grid_info()['column']</code>时,这将只获得网格中最后一个按钮的位置。这意味着只有最后一个按钮会按照您的观察进行更新。在</p>
<p>要解决这个问题,您可以实现一个包含按钮的列表,或者实现另一种方法。其中一种方法是:</p>
<pre><code>for i in range(5):
for j in range(5):
gameButton = Button(boardFrame, bg="khaki1", width=10, height=5,
command=lambda i=i, j=j: colorTheButton(i, j))
gameButton.grid(row=i, column=j, sticky=E)
</code></pre>
<p>我将命令改为<code>lambda i=i, j=j: colorTheButton(i, j)</code>,它将按钮的实际网格位置传递给<code>colorTheButton</code>。在</p>
<p>然后<code>colorTheButton</code>如下:</p>
^{pr2}$
<p>请注意,我已经尽力使您的代码尽可能地相似;这段代码仍然会每次生成一个<em>new</em>按钮,并将旧的按钮覆盖到位。这不如修改原来的按钮有效,但这是一个不同的问题!在</p>