<p>我想你错过了什么包和网格实际上是。考虑以下代码:</p>
<pre><code>import tkinter as tk
root = tk.Tk()
myFrame = tk.Frame(root)
myFrame.pack()
myButton1 = tk.Button(myFrame, text='This is button 1')
myButton2 = tk.Button(myFrame, text='This is button 2')
myButton1.grid(row=0, column=0)
myButton2.grid(row=1, column=0)
root.mainloop()
</code></pre>
<p>通过创建<code>root</code>,我们创建了一个新窗口。我们将把其他的东西都放在这个窗口里。然后我们创建<code>myFrame</code>。注意,实际的“thing”(用更恰当的术语-widget)是在第<code>myFrame = tk.Frame(root)</code>行中创建的。请注意,我们必须指定将这个小部件放在括号中的位置,并且我们已经编写了它将是root-我们的主窗口。空白框架可能不是最好的例子,因为你看不到它被放置(除非你至少使用了更多的规范),但仍然。我们已经创建了它,但没有将它放在我们的用户界面中。我们使用<code>.pack()</code>来放置它。现在您将小部件称为用作包或网格。但事实并非如此。Pack和grid只是一组规则,在这些规则上,小部件被放置在某种窗口中。因此,如果您想在本例中的<code>root</code>中添加更多内容,则必须再次使用<code>.pack()</code>。为什么?如果你给你的电脑屏幕上如何放置东西的两套规则,它们很可能会互相冲突。但是,如果我们再往下一层,现在想在<code>myFrame</code>中放置一些东西,我们可以再次选择要使用的规则集。这是因为它不重要,我们的<code>frame</code>将在<code>root</code>内结束,我们现在只想指定按钮1和2将在帧内结束的位置。因此,我们可以再次使用<code>.pack()</code>或切换到<code>.grid()</code>。你知道吗</p>
<p>总之:<code>.pack()</code>、<code>.grid()</code>和<code>.place()</code>是关于如何将小部件放置在其他小部件中的一组规则。在更一般的情况下,这些规则是关于如何把盒子放在其他盒子里。一个盒子里我们安排其他盒子只能有一套规则。你知道吗</p>
<p>我希望这个例子有帮助。你知道吗</p>