Open In App

Python | winfo_ismapped() and winfo_exists() in Tkinter

Improve
Improve
Like Article
Like
Save
Share
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.
 



Last Updated : 19 Mar, 2023
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads