だから私はtkinterでキャンバスウィジェットを使って、スクロールバーを持つラベルでいっぱいのフレームを作成してきました。フレームがその中に配置されたラベルのサイズにのみ拡大することを除いて、すべてがうまく機能しています-フレームを親キャンバスのサイズに拡大したい.
これは、キャンバスのフレームに pack(expand = True) (以下のコードでコメントアウトしています) を使用すると簡単に実行できますが、スクロールバーが機能しません。
適切なコードは次のとおりです。
...
self.canvas = Canvas(frame, bg = 'pink')
self.canvas.pack(side = RIGHT, fill = BOTH, expand = True)
self.mailbox_frame = Frame(self.canvas, bg = 'purple')
self.canvas.create_window((0,0),window=self.mailbox_frame, anchor = NW)
#self.mailbox_frame.pack(side = LEFT, fill = BOTH, expand = True)
mail_scroll = Scrollbar(self.canvas, orient = "vertical",
command = self.canvas.yview)
mail_scroll.pack(side = RIGHT, fill = Y)
self.canvas.config(yscrollcommand = mail_scroll.set)
self.mailbox_frame.bind("<Configure>", self.OnFrameConfigure)
def OnFrameConfigure(self, event):
self.canvas.configure(scrollregion=self.canvas.bbox("all"))
また、フレームに色を付けた画像も用意しました。ピンクの領域は、mailbox_frame で塗りつぶす必要があるキャンバスです (右側にスクロールバーが表示されます)。