Python | forget_pack() and forget_grid() method in Tkinter

29 Nov, 2021
If we want to unmap any widget from the screen or toplevel then forget() method is used. There are two types of forget method forget_pack() ( similar to forget() ) and forget_grid() which are used with pack() and grid() method respectively.
Syntax: widget.forget_pack()

widget can be any valid widget which is visible.

# Imports tkinter and ttk modulefrom tkinter import * from tkinter.ttk import *  # toplevel windowroot = Tk()  # method to make widget invisible# or remove from topleveldef forget(widget):      # This will remove the widget from toplevel    # basically widget do not get deleted    # it just becomes invisible and loses its position    # and can be retrieve    widget.forget()  # method to make widget visibledef retrieve(widget):    widget.pack(fill = BOTH, expand = True)  # Button widgetsb1 = Button(root, text = "Btn 1")b1.pack(fill = BOTH, expand = True)  # See, in command forget() method is passedb2 = Button(root, text = "Btn 2", command = lambda : forget(b1))b2.pack(fill = BOTH, expand = True)  # In command retrieve() method is passedb3 = Button(root, text = "Btn 3", command = lambda : retrieve(b1))b3.pack(fill = BOTH, expand = True)  # infinite loop, interrupted by keyboard or mousemainloop()
Output:
After forget
After retrieval
Notice the difference in the position of Button 1 before and after forget as well as after retrieval.
Syntax: widget.forget_grid()

widget can be any valid widget which is visible.

Note : This method can be used only with grid() geometry methods.
Code #2:
# Imports tkinter and ttk modulefrom tkinter import *from tkinter.ttk import *  # toplevel windowroot = Tk()  # method to make widget invisible# or remove from topleveldef forget(widget):      # This will remove the widget from toplevel    # basically widget do not get deleted    # it just becomes invisible and loses its position    # and can be retrieve    widget.grid_forget()  # method to make widget visibledef retrieve(widget):    widget.grid(row = 0, column = 0, ipady = 10, pady = 10, padx = 5)  # Button widgetsb1 = Button(root, text = "Btn 1")b1.grid(row = 0, column = 0, ipady = 10, pady = 10, padx = 5)  # See, in command forget() method is passedb2 = Button(root, text = "Btn 2", command = lambda : forget(b1))b2.grid(row = 0, column = 1, ipady = 10, pady = 10, padx = 5)  # In command retrieve() method is passedb3 = Button(root, text = "Btn 3", command = lambda : retrieve(b1))b3.grid(row = 0, column = 2, ipady = 10, pady = 10, padx = 5)  # infinite loop, interrupted by keyboard or mousemainloop()
Output:
After Forget
After Retrieval
Notice that the position of Button 1 remains same after forget and retrieval. With grid_forget() method, you can place it at any grid after retrieval but generally, the original grid is chosen.
Python-gui
Python-tkinter
Python
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Python Dictionary
Different ways to create Pandas Dataframe
Enumerate() in Python
Read a file line by line in Python
Python String | replace()
How to Install PIP on Windows ?
*args and **kwargs in Python
Python Classes and Objects
Iterate over a list in Python
Python OOPs Concepts