首页 > 解决方案 > 如何删除 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()

标签: pythontkinter

解决方案


使用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 pack方法与place结合使用。但是,这种组合旨在允许您在一个容器中同时交替 打包 放置小部件。换句话说,一些小部件被打包,其中一些被放置在一个容器中。没有一个小部件是同时打包放置的。

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


推荐阅读