<p>在每个容器的子窗口小部件上只能使用一个几何体管理器,但是如果子窗口小部件本身就是容器,则可以为其子窗口小部件使用任何您喜欢的几何体管理器。这意味着我们只需将<code>Frame</code>和<code>pack()</code><code>Entry</code>和<code>Scrollbar</code>放入其中,使用<code>fill='y'</code>参数使<code>Scrollbar</code>填满可用空间。</p>
<p>更改此:</p>
<pre><code>self.entry3 = Text(self,height=18)
self.entry3.grid(column=1,row=5, columnspan=5, rowspan=1, sticky='W')
# PROBLEM: GET SCROLLBAR TO BE THE RIGHT SIZE (IT'S NOT THE SIZE OF THE THING ITS BESIDE)
self.scrollbar = Scrollbar(self) # height= not permitted here!
self.entry3.config(yscrollcommand= self.scrollbar.set)
self.scrollbar.config(command= self.entry3.yview)
self.grid()
self.scrollbar.grid(column=6, row=5, rowspan=2, sticky='W')
</code></pre>
<p>对此:</p>
<pre><code>self.frame = Frame(self)
self.frame.grid(column=1,row=5, columnspan=6, rowspan=1, sticky='W')
self.entry3 = Text(self.frame,height=18)
self.entry3.pack(side='left', fill='both', expand=True)
# PROBLEM: SOLVED
self.scrollbar = Scrollbar(self.frame) # height= not permitted here!
self.entry3.config(yscrollcommand= self.scrollbar.set)
self.scrollbar.config(command= self.entry3.yview)
self.grid()
self.scrollbar.pack(side='right', fill='y')
</code></pre>