擅长:python、mysql、java
<p>你这里有一些问题。</p>
<p>首先,使用<code>pack</code>和<code>place</code>。通常,在容器小部件中只应使用1个几何体管理器。我不建议使用<code>place</code>。你需要处理的工作太多了。</p>
<p>其次,在构造按钮时调用回调<code>movedown</code>。这不是你想做的——你想传递函数,而不是函数的结果:</p>
<pre><code>buttonup = Button(window, text = 'down', width = 5, command = movedown)
</code></pre>
<p>第三,<code>globals</code>返回当前命名空间的字典——它不太可能包含整数键。要获取对由<code>b</code>引用的对象的引用,您需要<code>globals()["b"]</code>。即使更改了,更改全局命名空间中<code>b</code>的值也不会更改标签的位置,因为标签无法知道该更改。一般来说,如果您需要使用<code>globals</code>,您可能需要重新考虑您的设计。</p>
<p>这里有一个简单的例子,我会怎么做。。。</p>
<pre><code>import Tkinter as tk
def window(root):
buf_frame = tk.Frame(root,height=0)
buf_frame.pack(side='top')
label = tk.Label(root,text="Hello World")
label.pack(side='top')
def movedown():
buf_frame.config(height=buf_frame['height']+22)
button = tk.Button(root,text='Push',command=movedown)
button.pack(side='top')
root = tk.Tk()
window(root)
root.mainloop()
</code></pre>