如何删除 Tkinter 小部件放置?

I a*_*ard 2 python tkinter

我有不会消失的按钮。我写了按钮的绝对位置,当我试图忘记它时它不会消失。我设法通过将按钮的绝对位置写入窗口外的坐标来使其消失。如何让它通过删除功能消失?

这就是我所拥有的

from tkinter import*

def delete():
    button1.pack_forget()
    button2.pack_forget()

gui =Tk()
gui.geometry("250x500")

button1 = Button(gui, text="1", command=delete, pady= 15, padx= 20)
button1.pack(pady= 5, padx= 20)
button1.place(x=85, y=60)
button2 = Button(gui, text="2", pady= 15, padx= 20)
button2.pack(pady= 5, padx= 20)
button2.place(x=63, y=120)

gui.mainloop()
Run Code Online (Sandbox Code Playgroud)

Mic*_*dry 6

使用place_forget()而不是pack_forget(). 您也可以删除pack()通话。在您的示例中,调用place会否定pack调用。这就是为什么pack_forget()行不通的原因。按钮一被放置就不再被包装

button1.pack(...)  # do it this way
button1.place(...) # nevermind, do it this way
Run Code Online (Sandbox Code Playgroud)

例子:

from tkinter import *

def delete():
    button1.place_forget()
    button2.place_forget()

gui =Tk()
gui.geometry("250x500")

button1 = Button(gui, text="1", command=delete, pady= 15, padx= 20)
button1.place(x=85, y=60)
button2 = Button(gui, text="2", pady= 15, padx= 20)
button2.place(x=63, y=120)

gui.mainloop()
Run Code Online (Sandbox Code Playgroud)

Tkinter 有 3 种几何方法:放置、打包和网格。每个小部件只需要一种几何方法,但允许将grid pack方法与place结合起来。然而,这种组合旨在允许您同时将小部件 打包 放置在一个容器内。换句话说,一些小部件被打包在一个容器内,而另一些则被放置在一个容器内。没有一个小部件同时被打包放置

确定使用哪个很简单。如果您想将一个小部件“停靠”到其父级的一个或多个边缘,请使用pack。如果您需要表格布局,请使用grid。如果需要任意定位使用地方

  • 我们可以将 *place* 与 *grid* 或 *pack* 一起使用。但 *pack* 不能与 *grid* 一起使用,或者 *grid* 不能与 *pack* 一起使用。 (3认同)