Create a Yes/No Message Box in Python using tkinter

Python offers a number Graphical User Interface(GUI) framework but Tk interface or tkinter is the most widely used framework. It is cross-platform which allows the same code to be run irrespective of the OS platform (Windows, Linux or macOS). Tkinter is lightweight, faster and simple to work with. Tkinter provides a variety of widgets that can be customized using standard attributes and geometry management methods. The Tkinter message box can be used to ask questions or display messages to the user.

Note: For more information, refer to Python GUI – tkinter

Steps to create a tkinter message box :



  1. Import tkinter module
    import tkinter as tk
    from tkinter import *

    Note: Name of the module in Python 2.x is ‘Tkinter’ and in Python 3.x it is ‘tkinter’. Python 3.x is used here.

  2. Import tkinter messagebox widget
    from tkinter import messagebox as mb
  3. Create the method that is called to display the Yes/No Message Box
    def call():
        res=mb.askquestion('Exit Application', 'Do you really want to exit')
        if res == 'yes' :
            root.destroy()
        else :
            mb.showinfo('Return', 'Returning to main application')
    

    Explanation:
    Syntax:

    askquestion(title=None, message=None, **options) 

    Parameter

    • title: used to give a name which is displayed in as header of the dialog box.
    • message: question for the user.

    Return value: Returns ‘yes’ when the yes option is clicked and ‘no’ when the no option is clicked.

    Syntax:

    showinfo(title=None, message=None, **options)

    Parameter

    • title: used to give a name which is displayed in as header of the dialog box.
    • message: information for the user.

    Syntax:

    destroy() 

    This method destroys a widget.

  4. Create the canvas for the button will be placed
    root=tk.Tk()
    canvas=tk.Canvas(root, width=200, height=200)
    canvas.pack()
    

    Explanation:
    Syntax:

    Tk(screenName=None,  baseName=None,  className=’Tk’,  useTk=1)

    Used to create the parent window. Tk class is instantiated without any arguments.The name of the parent window can be changed to desired one by changing the value of className argument. Here ‘root’ is the parent window.

    Syntax:



    Canvas(master, option=value)

    Parameter:

    • master: used to represent the parent window.Here ‘root’ is the master.
    • option: used to specify border, background color, height, width etc .

    Return Value: The method returns a string (.!canvas) .

    Syntax:

    pack(**options) 

    Organizes the widgets in blocks before placing in the parent widget.The options can be used to expand, fill and specify side(left, right, top, bottom)

  5. Create the button and place it inside the canvas
    b=Button(root, text='Quit Application', command=call)
    canvas.create_window(100, 100, window=b)
    

    Explanation:
    Syntax:

    Button(master=None, options)

    Parameter:

    • master: Here root is the parent window.
    • options:There are a number of supported options. The options used in this case are text and command.
      • text: button text
      • command: the action or method that is to be invoked when the button is pressed.

    Return Value: The method returns a string (.!button) .

    Syntax:

    create_window(x, y, **options)

    Parameter:

    • x, y: Specifies the position of the widget(button) within the canvas.
    • options: There are a variety of options supported like anchor, height, width, state, tags, window. The option used here is window.
      • window: window=b where b is the widget(button) to be placed on the canvas.

    Return Value: Returns the object ID for the window object.

  6. Call the mainloop() method
    root.mainloop()
    

    Explanation:
    Syntax:

    mainloop()

    It is an infinite loop that is called when the program is ready to be run.It waits for an event(mouse clicks) to occur and as soon as the event is received the event is processed.The mainloop() runs as long as the parent window is not destroyed.

The complete program is as follows:

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python program to create 
# yes/no message box
  
  
import tkinter as tk
from tkinter import * 
from tkinter import messagebox as mb
  
  
def call():
    res = mb.askquestion('Exit Application'
                         'Do you really want to exit')
      
    if res == 'yes' :
        root.destroy()
          
    else :
        mb.showinfo('Return', 'Returning to main application')
  
# Driver's code
root = tk.Tk()
canvas = tk.Canvas(root, 
                   width = 200
                   height = 200)
  
canvas.pack()
b = Button(root,
           text ='Quit Application',
           command = call)
  
canvas.create_window(100, 100
                     window = b)
  
root.mainloop()

chevron_right


Output:




My Personal Notes arrow_drop_up


If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.


Article Tags :

Be the First to upvote.


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.