Python 如何在不使用just.place的情况下临时删除(而不是删除和替换)Tkinter小部件?
我希望这不是复制品,但我在任何地方都找不到: 我使用Tkinter编写应用程序已经有一段时间了(其中甚至有两个游戏,但我现在使用Pygame) 我的问题是,如果不使用“Python 如何在不使用just.place的情况下临时删除(而不是删除和替换)Tkinter小部件?,python,tkinter,Python,Tkinter,我希望这不是复制品,但我在任何地方都找不到: 我使用Tkinter编写应用程序已经有一段时间了(其中甚至有两个游戏,但我现在使用Pygame) 我的问题是,如果不使用“.place”(x=someLARGE\u Number,y=anotherLARGE\u Number)”的肮脏伎俩,我该如何做“.pack”then“.unpack”(临时移除) 例: root=Tk() 当我移除它时。我键入如下内容: label1.place( x = 3333, y = 3333 ) 我知道打包和解包是
.place”(x=someLARGE\u Number,y=anotherLARGE\u Number)
”的肮脏伎俩,我该如何做“.pack”then“.unpack”(临时移除)
例:
root=Tk()
当我移除它时。我键入如下内容:
label1.place( x = 3333, y = 3333 )
我知道打包和解包是存在的,但你们不能解包一个已经放置的物体,你们也不能精确地使用打包来放置一个物品,所以我怎样才能更整洁地移除它?它在代码上看起来很恶心,可能把很多东西放在一边或屏幕上,有时几乎看不到一次移动一个。如果这是一个重复,请评论一些帮助,但我找不到类似的东西
重述:
问题:清除临时删除项目的方法,无需销毁项目,也无需使用带有一对大屏幕外数字的.place()方法
尝试:.place(x=LARGE,y=LARGE)
就是这样,.unpack需要一些东西。pack(ed)和你不能(据我所知)通过.pack将物品放在你想要的地方
需要:帮助或指向像我这样已回答问题的链接 使用.place\u-forget()
方法,该方法与创建小部件时选择的“几何体管理器”类型关联:
label1.place_forget()
之后,可以通过再次放置使其再次显示:
label1.place(x=1, y=1)
请注意,使用.place()/.place\u forget()
几何体管理器并不总是有益的
对于其他几何图形管理器,也可以使用.grid()/.grid\u-forget()
或.pack()/.pack\u-forget()
方法,其中网格排列或包布局更适合您的GUI设置/配置/大小调整需要
可以检查所有实例方法的文档字符串属性。\uuuuu doc\uuuu
:
>>> print label.place_forget.__doc__
Unmap this widget.
>>> print label.grid_forget.__doc__
Unmap this widget.
>>> print label.pack_forget.__doc__
Unmap this widget and do not use it for the packing order.
您可以查询小部件是否使用几何体管理器(网格、包或位置)“映射”,然后根据需要“忽略”它:
def unmap(widget):
result = False
if widget and widget.winfo_exists() and widget.winfo_ismapped():
result = True
geom_mgr = widget.winfo_manager()
if geom_mgr == 'grid':
widget.grid_forget()
elif geom_mgr == 'pack':
widget.pack_forget()
elif geom_mgr == 'place':
widget.place_forget()
else:
result = False
return result
请注意,调用与映射例程不匹配的“忘记”例程不会引发异常。因此,如果您
pack()
一个小部件,您可以在该小部件上调用grid\u-forget()
,而不会导致错误或产生任何影响。在这种情况下,只有pack\u-forget()
会隐藏小部件。我想你可能会把事情搞砸,但是“放置几何体管理器。使用网格或放置”你是否使用了“使用网格或放置”?如果是这样,我该如何准确地放置它(也就是使用坐标?)是的,我的意思是pack
和grid
。此外,这些系统还引入了完全不依赖坐标的其他系统。对于复杂且可调整大小的内容,它们更灵活、更易于使用。了解更多关于他们的信息。
def unmap(widget):
result = False
if widget and widget.winfo_exists() and widget.winfo_ismapped():
result = True
geom_mgr = widget.winfo_manager()
if geom_mgr == 'grid':
widget.grid_forget()
elif geom_mgr == 'pack':
widget.pack_forget()
elif geom_mgr == 'place':
widget.place_forget()
else:
result = False
return result