根据我的理解,使用 pack() 管理器,每个帧都会相对于代码中其他帧的位置放置。所以如果我这样做:
frame1 = tk.Frame(root)
frame1.pack()
frame2 = tk.Frame(root)
frame2.pack()
frame3 = tk.Frame(root)
frame3.pack()
Run Code Online (Sandbox Code Playgroud)
然后frame2
将出现在下方/之后frame1
和之前frame3
。
我的问题是,当使用该功能时frame2.pack_forget()
,每当我再次这样做时,frame2.pack()
顺序都不会恢复,但现在我有frame1
,,,,好像是最后一个。frame3
frame2
frame2
pack
我如何使用pack_forget()
然后pack()
在创建它的完全相同的位置?
如何在创建它的完全相同的位置使用 pack_forget() 然后使用 pack() ?
从广义上讲,你不能。其本质pack
是将小部件放置在可用空间的边缘。当您添加和删除小部件时,可用空间会发生变化。当您调用 时pack_forget
,tkinter 会忘记小部件在哪里。
话虽这么说,pack
有一些选项可以帮助解决这个问题。您可以使用before
和after
选项将小部件插入到包装顺序中的其他小部件之前或之后。由您来记住顺序。例如,您可以frame2.pack(before=frame3)
将其插入之前frame3
。
如果您想动态隐藏和删除小部件,grid
通常是更好的选择,因为grid_remove
会grid
记住小部件的位置。
归档时间: |
|
查看次数: |
2274 次 |
最近记录: |