<p>您可能需要使用<code>pack()</code>或<code>grid()</code>来获得您想要的结果。我不会使用<code>place()</code>那么多,除了一些您在编程早期可能不会遇到的特定需求。你知道吗</p>
<p>如果你花时间回顾<code>grid()</code>和<code>pack()</code>,你会发现他们几乎可以做任何你需要他们做的事情。当我第一次开始学习Python/Tkinter时,我对<code>place()</code>有同样的想法,但在过去的一年里,我并没有在我的程序中真正使用它。只是我不需要它。你知道吗</p>
<p>请看下面的代码。
我选择使用<code>grid()</code>来放置我的小部件,我们可以使用<code>columnconfigure()</code>和<code>rowconfigure()</code>来为小部件所在的行和列添加权重。这允许扩展放置在那里的小部件。你知道吗</p>
<p>根据您在注释中提出的问题,<code>weight</code>用于决定列和/或行是否随窗口展开。默认权重为零不会随窗口展开,值为1时会均匀展开。对于展开变量,也可以将其设置为大于或小于1。你知道吗</p>
<p>这里有一篇关于<code>weight</code>的帖子,已经有了很好的答案:<a href="https://stackoverflow.com/questions/45847313/what-does-weight-do-in-tkinter">What does 'weight' do in tkinter?
</a></p>
<pre><code>import tkinter as tk
root=tk.Tk()
root.columnconfigure(0, weight=1) # allows widgets placed on row zero to expand left and right.
root.rowconfigure(0, weight=1) # allows widgets placed on column zero to expand up and down.
tk.Label(root, text="This label resizes with window", background="grey").grid(row=0, column=0, sticky="nsew")
root.mainloop()
</code></pre>
<p>如果您真的想使用<code>place()</code>,那么您可能想尝试使用<code>bind()</code>和函数来更新位置。我们可以<code>bind()</code>将处理根窗口大小调整的事件转换为更新标签位置的函数。你知道吗</p>
<p>请看下面的代码:</p>
<pre><code>import tkinter as tk
root=tk.Tk()
lbl = tk.Label(root, text="This label resizes with window", background="grey")
lbl.place(x=10, y=10, width=100, height=20)
def update_label(event):
w,h = event.width, event.height
lbl.place(x=10, y=10, width=w, height=h)
root.bind('<Configure>', update_label)
root.mainloop()
</code></pre>