我在框架上有可滚动的小部件。框架在画布上。它是一个控制台,清晰的控制台按钮调用
for i in self.CanvasFrame.winfo_children():
i.destroy()
CanvasFrame是画布上的框架,它的子项被销毁了。问题是,当孩子们离开时,框架的大小仍然存在,并且由于剩余的大小,配置画布的事件不起作用。事件处理程序:
self.update()
self.Canvas.configure(scrollregion = self.Canvas.bbox("all"))
self.Canvas.yview_moveto(1.0)
我试过
self.Canvas.itemconfigure(1, height = 0) #didnt work
self.Canvas.itemconfigure(1, height = 1)
另一条线给它一个固定的高度,添加新的孩子不会调整框架的大小。我该如何解决这个问题?
更新: 工作清晰的控制台方法:
for i in self.CanvasFrame.winfo_children():
i.destroy()
Label(self.CanvasFrame).pack()
self.CanvasConfigureEvent()
self.CanvasFrame.winfo_children()[0].destroy()
答案 0 :(得分:1)
当您从另一个窗口小部件(例如框架)中删除所有窗口小部件时,几何管理器不再受控制。由于没有控制几何管理器,因此永远不会指示框架调整大小。
最简单的解决方案是创建一个1x1的框架或标签,并将其打包在框架中,至少是暂时的。这将导致pack算法启动并调整父帧的大小。