如何在tkinter中使Frame消失和重新出现而不创建新的Frame?
我正在使用 Tkinter
,并且用 pack
来管理 Frame
。我想让一个 Frame
在视觉上消失,但又不想删除它或者让它变得不可见。我希望下面的 Frame
能填补这个空间,之后我还想让这个隐藏的 Frame
重新出现,同时其他的 Frame
也能回到原来的位置。让我澄清一下,我试过其他的答案,但都不符合我的需求。我使用的是 Python 3.11.7。
1 个回答
2
如果你在使用 pack
这个方法,那么你可以用 pack_forget
让某个框消失。之后你可以再用 pack
让它重新出现。不过要注意,当你第二次调用 pack
的时候,要把它放回正确的位置。相比之下,grid
方法更好用,因为它能记住一个组件是怎么被放到屏幕上的。
下面是一个使用 pack
的例子:
import tkinter as tk
def toggle():
if top_frame.winfo_viewable():
top_frame.pack_forget()
else:
top_frame.pack(before=bottom_frame, fill="x")
root = tk.Tk()
root.geometry("300x300")
top_frame = tk.Frame(root, background="bisque", height=100)
bottom_frame = tk.Frame(root)
toggle_button = tk.Button(bottom_frame, text="Toggle", command=toggle)
top_frame.pack(side="top", fill="x")
bottom_frame.pack(side="bottom", fill="both", expand=True)
toggle_button.pack(side="bottom", padx=20, pady=20)
tk.mainloop()