<p>如果要在调整窗口大小时展开窗口小部件,则可以在<code>pack()</code>中以不同的组合使用<code>expand</code>和<code>fill</code>。这一切都取决于你想扩展的元素和方向。你知道吗</p>
<pre><code>.pack(fill='x')
.pack(fill='y')
.pack(fill='both')
.pack(expand=True, fill='x')
.pack(expand=True, fill='y')
.pack(expand=True, fill='both')
</code></pre>
<p><a href="https://i.stack.imgur.com/OsfME.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/OsfME.png" alt="enter image description here"/></a></p>
<hr/>
<p>如果要调整窗口大小以查看<code>Entry</code>中的所有新文本,则可以使用<code>widget.configure(width=...)</code>。条目使用字符数作为宽度。你知道吗</p>
<p>你可以用句子的长度来改变宽度</p>
<pre><code>result.configure(width=len(sentence))
</code></pre>
<p>或者保持宽度至少20个字符</p>
<pre><code>length = max(20, len(sentence))
result.configure(width=length)
</code></pre>
<hr/>
<p>完整代码</p>
<pre><code>import tkinter as tk
import random
# - functions -
verbs = ["goes to", "walks through", "runs through"]
def generate():
user_name = name_entry.get()
move_verb = random.choice(verbs)
place = place_entry.get()
noun = object_entry.get()
sentence = '{} {} a {} and finds a {}.'.format(user_name, move_verb, place, noun)
result.delete(0, 'end')
result.insert(0, sentence)
length = max(20, len(sentence))
result.configure(width=length)
# - main -
window = tk.Tk()
user_name_label = tk.Label(window, text="Enter a name: ")
name_entry = tk.Entry(window)
object_label = tk.Label(window,text="Enter an object: ")
object_entry = tk.Entry(window)
place_label = tk.Label(window, text="Enter a place: ")
place_entry = tk.Entry(window)
button = tk.Button(window, text="Generate story", command=generate)
result = tk.Entry(window)
user_name_label.pack(expand=True, fill='both')
name_entry.pack(fill='both')
object_label.pack(expand=True, fill='both')
object_entry.pack(fill='both')
place_label.pack(expand=True, fill='both')
place_entry.pack(fill='both')
button.pack(expand=True, fill='both')
result.pack(fill='both')
window.mainloop()
</code></pre>