Creating and Managing Windows in Python GUI - tkinter

Graphical User Interfaces (GUI) are an essential element in modern application development. Python, being a versatile programming language, provides several GUI frameworks to choose from. One of the most popular ones is tkinter, which is a standard GUI library for Python.

In this article, we will explore how to create and manage windows using tkinter in Python. Windows serve as the main interface for users to interact with the application, so understanding how to create and manage them is crucial for building functional and user-friendly applications.

Creating a Window

To start with tkinter, we first need to import the tkinter module:

import tkinter as tk

To create a window, we need to create an instance of the Tk class:

# Create the main window
window = tk.Tk()

The Tk class represents the main window or the root window of our application. We can further customize this window by setting attributes such as its title, size, and other properties.

Setting Window Attributes

We can set various attributes for our window using the methods provided by the Tk class. Some commonly used attributes include:

  • Title: We can set the window title using the title method.
window.title("My Window")
  • Size: The window's size can be specified using the geometry method.
  • Resizable: We can specify whether the window is resizable or not using the resizable method.
window.resizable(False, False)  # Disable resizing in both directions
  • Icon: We can set an icon for the window using the iconbitmap method.

Adding Widgets to the Window

Once we have created a window, we can add various GUI elements, called widgets, onto it. tkinter provides a wide range of widgets such as buttons, labels, text boxes, and more.

To add a widget, we first need to choose the appropriate widget class from tkinter. For example, to add a label, we use the Label class:

label = tk.Label(window, text="Hello World")

The Label class represents a text label in tkinter. We pass the window object as the first argument and set the text to be displayed as the text parameter. The pack method is used to add the widget to the window.

Similarly, we can add other widgets to the window using their respective classes and appropriate methods.

Managing Windows and Events

In GUI applications, it's essential to handle user interactions, such as button clicks or menu selections. tkinter provides a mechanism to handle these events using event-driven programming.

We can associate specific functions, called event handlers or callbacks, with events that occur on the window or widgets. For example, to handle a button click event, we define a function and associate it with the button's command parameter:

def button_click():
    # Function code here

button = tk.Button(window, text="Click Me", command=button_click)

The command parameter of the Button class takes a reference to the function that should be called when the button is clicked.

Besides handling button clicks, we can also handle other events such as mouse movements, keyboard inputs, window close events, and more. tkinter offers several built-in events and methods to bind these events to our functions.

Closing the Window and Application Loop

Once we have created and customized our window, we need to run the application loop to display the window and start processing events.

We invoke the mainloop method on the window object:


The mainloop method is a blocking call that runs an application's event loop until the window is closed. It continuously listens for events and dispatches them to their corresponding event handlers.


Using tkinter, we can easily create and manage windows in Python GUI applications. By setting window attributes, adding widgets, managing events, and running the application loop, we can create interactive and functional GUI applications.

In this article, we covered the basics of creating and managing windows using tkinter. The library provides many more features and options to explore, allowing for extensive customization and development of powerful GUI applications. So, armed with this knowledge, go ahead and start building your next interactive Python application with tkinter!

© NoobToMaster - A 10xcoder company