【发布时间】:2019-03-18 11:07:29
【问题描述】:
如何强制框架获取 window_height 0?
我的问题出现的一般情况:
import Tkinter as Tk
class App(Tk.Frame):
def __init__(self, master):
Tk.Frame(self, master)
self.place_holder = Tk.Frame(master=self)
self.content = Tk.Frame(master=self)
self.place_holder.pack()
self.content.pack(side=Tk.RIGHT)
Tk.Button(master=self,command=self.add_something).pack(side=Tk.TOP)
self.to_destroy = []
def add_something(self):
foo = Tk.button(master=self.place_holder, command=self.destroy_last)
self.too_destroy.append(foo)
def destroy_last(self):
self.to_destroy[-1].destroy()
问题:
当我向place_holder 添加更多元素时,它会很好地重新缩放。
当我从place_holder 中删除元素时,它会很好地重新缩放。
EXCEPT 当我删除最后一个元素时。
在我添加任何内容之前,即使我添加了place_holder.pack(),它也不会显示。但是在删除最后一个元素后,place_holder 将保持最后一个元素的大小。有没有办法再次隐藏place_holder,直到我再次添加内容?
示例图片
【问题讨论】:
-
@stovfl 使用
pack_forget()和pack()时,框架/小部件将重新定位,就像您pack()'ed 一个新框架一样。它不像 grid_remove 那样记住位置。 -
我要解决的真正问题是使用
pack()在另一个框架之前获取一个框架。与此同时,我发现 PanedWindow 的before选项存在。此选项是否也适用于pack()? (这将消除 place_holder 存在的需要) -
@miThom: "在另一个帧之前获取一个帧":当您想将它们全部放在您想要的位置时,Grid Geometry Manager 使用起来特别方便。
-
@stovfl 我记得 grid 和 pack/pack_forget 有同样的问题。空单元格在删除其中的最后一个元素后保持其大小。但我不确定我在那个单元格中是否有一个空框架......可能值得再次测试
-
@miThom: "不确定我是否有一个空框架": 用
print('children:{}'.format(self.place_holder.children))验证
标签: python python-2.7 tkinter