Create First GUI Application using Python-Tkinter

20 Sep, 2021
Tkinter is a Python Package for creating GUI applications. Python has a lot of GUI frameworks, but Tkinter is the only framework that’s built into the Python standard library. Tkinter has several strengths; it’s cross-platform, so the same code works on Windows, macOS, and Linux. Tkinter is lightweight and relatively painless to use compared to other frameworks. This makes it a compelling choice for building GUI applications in Python, especially for applications where a modern shine is unnecessary, and the top priority is to build something that’s functional and cross-platform quickly.  
To understand Tkinter better, we will create a simple GUI. 
1. Import tkinter package and all of its modules.2. Create a root window. Give the root window a title(using title()) and dimension(using geometry()).  All other widgets will be inside the root window. 3. Use mainloop() to call the endless loop of the window. If you forget to call this nothing will appear to the user. The window will wait for any user interaction till we close it.
Example:
Python3
# Import Modulefrom tkinter import * # create root windowroot = Tk() # root window title and dimensionroot.title("Welcome to GeekForGeeks")# Set geometry (widthxheight)root.geometry('350x200') # all widgets will be here# Execute Tkinterroot.mainloop()
  
Output:  
Root Window
 
 4. We’ll add a label using the Label Class and change its text configuration as desired.  The grid() function is a geometry manager which keeps the label in the desired location inside the window. If no parameters are mentioned by default it will place it in the empty cell; that is 0,0 as that is the first location.  
Example:
Python3
# Import Modulefrom tkinter import * # create root windowroot = Tk() # root window title and dimensionroot.title("Welcome to GeekForGeeks")# Set geometry(widthxheight)root.geometry('350x200') #adding a label to the root windowlbl = Label(root, text = "Are you a Geek?")lbl.grid() # Execute Tkinterroot.mainloop()
Output:  
Label inside root window
 
5.  Now add a button to the root window. Changing the button configurations gives us a lot of options.  In this example we will make the button display a text once it is clicked and also change the color of the text inside the button. 
Example:
Python3
# Import Modulefrom tkinter import * # create root windowroot = Tk() # root window title and dimensionroot.title("Welcome to GeekForGeeks")# Set geometry(widthxheight)root.geometry('350x200') # adding a label to the root windowlbl = Label(root, text = "Are you a Geek?")lbl.grid() # function to display text when# button is clickeddef clicked():    lbl.configure(text = "I just got clicked") # button widget with red color text# insidebtn = Button(root, text = "Click me" ,             fg = "red", command=clicked)# set Button gridbtn.grid(column=1, row=0) # Execute Tkinterroot.mainloop()
 Output:   
Button added
After clicking “Click me”
 
6. Using the Entry() class we will create a text box for user input. To display the user input text, we’ll make changes to the function clicked(). We can get the user entered text using the get() function. When the Button after entering of the text, a default text concatenated with the user text. Also change button grid location to column 2 as Entry() will be column 1.
Example:
Python3
# Import Modulefrom tkinter import * # create root windowroot = Tk() # root window title and dimensionroot.title("Welcome to GeekForGeeks")# Set geometry(widthxheight)root.geometry('350x200') # adding a label to the root windowlbl = Label(root, text = "Are you a Geek?")lbl.grid() # adding Entry Fieldtxt = Entry(root, width=10)txt.grid(column =1, row =0)  # function to display user text when# button is clickeddef clicked():     res = "You wrote" + txt.get()    lbl.configure(text = res) # button widget with red color text insidebtn = Button(root, text = "Click me" ,             fg = "red", command=clicked)# Set Button Gridbtn.grid(column=2, row=0) # Execute Tkinterroot.mainloop()
 Output: 
 
Entry Widget at column 2 row 0
Displaying user input text. 
 
7. To add a menu bar, you can use Menu class. First, we create a menu, then we add our first label, and finally, we assign the menu to our window. We can add menu items under any menu by using add_cascade().
Example:
Python3
# Import Modulefrom tkinter import * # create root windowroot = Tk() # root window title and dimensionroot.title("Welcome to GeekForGeeks")# Set geometry(widthxheight)root.geometry('350x200') # adding menu bar in root window# new item in menu bar labelled as 'New'# adding more items in the menu barmenu = Menu(root)item = Menu(menu)item.add_command(label='New')menu.add_cascade(label='File', menu=item)root.config(menu=menu) # adding a label to the root windowlbl = Label(root, text = "Are you a Geek?")lbl.grid() # adding Entry Fieldtxt = Entry(root, width=10)txt.grid(column =1, row =0)  # function to display user text when# button is clickeddef clicked():     res = "You wrote" + txt.get()    lbl.configure(text = res) # button widget with red color text insidebtn = Button(root, text = "Click me" ,             fg = "red", command=clicked)# Set Button Gridbtn.grid(column=2, row=0) # Execute Tkinterroot.mainloop()
  Output :  
Menu bar
 
This simple GUI covers the basics of Tkinter package. Similarly, you can add more widgets and change their configurations as desired. 
 
 
Tkinter provides various controls, such as buttons, labels and text boxes used in a GUI application. These controls are commonly called Widgets.  The list of commonly used Widgets are mentioned below –
 
 
All Tkinter widgets have access to specific geometry management methods, which have the purpose of organizing widgets throughout the parent widget area. Tkinter exposes the following geometry manager classes: pack, grid, and place. Their description is mentioned below –
 
abhigoya
anikakapoor
kalrap615
Python-tkinter
Python
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.