擅长:python、mysql、java
<p>您正在覆盖循环中的<code>qtity_label</code>,因此它将是您最后设置的内容。当<code>add_qty</code>运行时,它只看到<code>qtity_label</code>的最后一个值,因此它会更新</p>
<p>您需要单独保存所有标签,或将它们传递到<code>command</code>函数中,并使用传入的标签而不是全局标签:</p>
<pre><code>def add_qty(label): # Note how the label is being passed-in
qty = label.cget('text') # And then the passed-in label is used
qty += 1
label.config(text=qty)
print(qty)
def sub_qty(label):
qty = label.cget('text')
qty -= 1
label.config(text=qty)
print(qty)
</code></pre>
<p>然后:</p>
<pre><code>sub_qtity_btn = Button(root, text='-', command=lambda q=qtity_label: sub_qty(q))
. . .
add_qtity_btn = Button(root, text='+', command=lambda q=qtity_label: add_qty(q))
</code></pre>
<p>有关为什么需要<code>q=qtity_label</code>的解释,请参阅<a href="https://stackoverflow.com/questions/233673/how-do-lexical-closures-work">this</a>post。基本上,<code>q</code><em>是</em><code>qtity_label</code>;但是被保存的方式是以后不会被意外覆盖的(有点)</p>