擅长:python、mysql、java
<p>你已经在做你该做的事了。示例代码将<code>self.diceList</code>设置为某个值。您可以在代码的任何其他地方直接使用<code>self.diceList</code>。在</p>
<p>顺便说一下,随着时间的推移,您编写的代码将很难维护。例如,如果你把骰子标签改为“骰子一”,或者干脆改为“一”,而不是“骰子1”?或者,随着你的应用程序的进展,你可能需要图形图像而不是按钮上的文本。您必须修改解析按钮名称的代码。实际上,您是在按钮标签中编码信息,这不是一个好主意。在</p>
<p>一个简单的解决方案是在回调中传递骰子数,这也使得<code>chooseDice</code>方法更简单、更容易理解。例如:</p>
<pre><code>self.button1.configure(command=lambda btn=self.button1: self.chooseDice(btn, 1))
</code></pre>
<p>上面的代码将两个参数传递给<code>chooseDice</code>方法:button实例(因此您可以禁用它)和button number(这样您就不必解析按钮名称来获取它)</p>
<p>这也允许您在循环中创建骰子,而不是硬编码同一代码块的多个副本。下面是一个完整的工作示例:</p>
^{pr2}$
<p>最后,最后几点建议:</p>
<p>不要使用<code>place</code>,这会使您的gui更难创建,而且它们不会很好地响应窗口大小的变化、字体的更改、平台的更改等。请使用<code>pack</code>和{<cd7>}。另外,不要创建固定宽度的按钮。同样,这是为了更好地处理字体的更改。有时您需要固定宽度的按钮,但您的代码似乎没有任何理由使用它们。在</p>
<p>最后,我不知道你到底想完成什么,但通常如果你用按钮来跟踪状态(这个东西是按还是不按?)您想要使用复选框(pick N of N N)或单选按钮(pick 1 of N)。你可能需要考虑切换到那些按钮,而不是按钮。在</p>