Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在不使用just.place的情况下临时删除(而不是删除和替换)Tkinter小部件?_Python_Tkinter - Fatal编程技术网

Python 如何在不使用just.place的情况下临时删除(而不是删除和替换)Tkinter小部件?

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 ) 我知道打包和解包是

我希望这不是复制品,但我在任何地方都找不到:

我使用Tkinter编写应用程序已经有一段时间了(其中甚至有两个游戏,但我现在使用Pygame)

我的问题是,如果不使用“
.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