Open In App

Python | winfo_ismapped() and winfo_exists() in Tkinter

Last Updated : 19 Mar, 2023
Summarize
Comments
Improve
Suggest changes
Share
Like Article
Like
Report

Tkinter provides numerous of universal widget methods or basic widget methods which works almost with all the available widgets.
 

winfo_ismapped() method -


This method is used to check whether the specified widget is visible or not. However, in this example, right after packing the widget back, the winfo_ismapped() method still returns the widget to be not mapped (false). Only after you clicked the button the second consecutive time it will update to be mapped (True).
 

Syntax: widget.winfo_ismapped()
Return Value: Returns True if widget is visible (or mapped), otherwise returns False.
Exception: If widget is destroyed, then it throws error.


 

Puython
# Imports tkinter and ttk module
from tkinter import * 
from tkinter.ttk import * 
import time

# toplevel window
root = Tk()

def forget(widget):
    widget.forget()
    print("After Forget method called. Is widget mapped? = ",
                               bool(widget.winfo_ismapped()))

def retrieve(widget):
    widget.pack()
    print("After retrieval of widget. Is widget mapped? = ",
                                bool(widget.winfo_ismapped()))

# Button widgets
b1 = Button(root, text = "Btn 1")
b1.pack()

# This is used to make widget invisible
b2 = Button(root, text = "Btn 2", command = lambda : forget(b1))
b2.pack()
 
# This will retrieve widget
b3 = Button(root, text = "Btn 3", command = lambda : retrieve(b1))
b3.pack()

# infinite loop, interrupted by keyboard or mouse
mainloop()

Output:
 After first Btn 2 Press:

 

After First Btn 3 Press:

 

After Second Btn 3 Press:
 

 


 

winfo_exists() method -


This method is used to check if the specified widget exists or not i.e if the widget is destroyed or not.
 

Syntax: widget.winfo_exists()
Return value: Returns True if widget exists, False otherwise.


 

Python
# Imports tkinter and ttk module
from tkinter import * 
from tkinter.ttk import *

# toplevel window
root = Tk()

def dest(widget):
    widget.destroy()
    print("Destroy method called. Widget exists? = ",
                          bool(widget.winfo_exists()))
    
def exist(widget):
    print("Checking for existence = ", bool(widget.winfo_exists()))

# Button widgets
b1 = Button(root, text = "Btn 1")
b1.pack()

# This is used to destroy widget
b2 = Button(root, text = "Btn 2", command = lambda : dest(b1))
b2.pack()
 
# This is used to check existence of the widget
b3 = Button(root, text = "Btn 3", command = lambda : exist(b1))
b3.pack()

# infinite loop, interrupted by keyboard or mouse
mainloop()

Output:
 

winfo_ismapped() method in tkinter 1


 

winfo_ismapped() method in tkinter 2


 

winfo_ismapped() method in tkinter


Note: If a widget is destroyed it cannot be retrieved again.
 


Next Article
Practice Tags :

Similar Reads