如何删除Tkinter小部件位置?

时间:2020-06-03 09:11:36

标签: 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()

1 个答案:

答案 0 :(得分:4)

使用place_forget()代替pack_forget()。您也可以删除pack()呼叫。在您的示例中,调用 place 会否定 pack 调用。这就是pack_forget()无法正常工作的原因。 放置的那一刻,按钮不再被打包。

button1.pack(...)  # do it this way
button1.place(...) # nevermind, do it this way

示例:

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()

Tkinter有3种几何方法〜放置,打包和网格。每个小部件只需要一种几何方法,但要组合 grid place 的strong> pack 方法。但是,该组合旨在使您可以同时在一个容器中替代 包装 放置小部件。换句话说,某些小部件是 packed ,而另一些是 placed 。所有小部件都没有打包和放置。

确定使用哪个很简单。如果要将窗口小部件“停靠”在父窗口的一个或多个边缘上,请使用 pack 。如果您需要表格布局,请使用 grid 。如果需要任意定位,请使用 place