在 canvas 上收缩一个框架,当框架的 children 被移除时
Shrink a frame on a canvas, when the children of the frame are removed
我在框架上有可滚动的小部件。该框架位于 canvas 上。它是一个控制台,清除控制台按钮调用
for i in self.CanvasFrame.winfo_children():
i.destroy()
CanvasFrame 是 canvas 上的框架,children 已被销毁。问题是,当 children 消失时,框架的大小仍然存在,并且配置 canvas 的事件由于剩余的大小而不起作用。事件处理程序:
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)
另一行给它一个固定的高度,添加新的 children 不会调整框架的大小。我该如何解决这个问题?
更新:
工作清除控制台方法:
for i in self.CanvasFrame.winfo_children():
i.destroy()
Label(self.CanvasFrame).pack()
self.CanvasConfigureEvent()
self.CanvasFrame.winfo_children()[0].destroy()
当您从另一个小部件(例如框架)中删除所有小部件时,几何管理器将不再受控。由于没有几何管理器处于控制之中,因此永远不会指示框架调整大小。
最简单的解决方案是创建一个 1x1 框架或标签并将其打包到框架中,至少暂时如此。这将导致打包算法启动并调整父框架的大小。
我在框架上有可滚动的小部件。该框架位于 canvas 上。它是一个控制台,清除控制台按钮调用
for i in self.CanvasFrame.winfo_children():
i.destroy()
CanvasFrame 是 canvas 上的框架,children 已被销毁。问题是,当 children 消失时,框架的大小仍然存在,并且配置 canvas 的事件由于剩余的大小而不起作用。事件处理程序:
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)
另一行给它一个固定的高度,添加新的 children 不会调整框架的大小。我该如何解决这个问题?
更新: 工作清除控制台方法:
for i in self.CanvasFrame.winfo_children():
i.destroy()
Label(self.CanvasFrame).pack()
self.CanvasConfigureEvent()
self.CanvasFrame.winfo_children()[0].destroy()
当您从另一个小部件(例如框架)中删除所有小部件时,几何管理器将不再受控。由于没有几何管理器处于控制之中,因此永远不会指示框架调整大小。
最简单的解决方案是创建一个 1x1 框架或标签并将其打包到框架中,至少暂时如此。这将导致打包算法启动并调整父框架的大小。