所以我一直在使用tkinter中的canvas小部件创建一个充满标签的框架,其中有一个滚动条.除了框架只扩展到放置在其中的标签的大小之外,一切都很好——我希望框架扩展到父画布的大小.
如果我对画布中的框架使用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"))
我还提供了一个带有彩色边框的图像,这样你就可以看到我的意思了.粉红色区域是需要通过邮箱_框架填充的画布(您可以看到右侧的滚动条):