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:
Note: If a widget is destroyed it cannot be retrieved again.