Opening a Second Window in Tkinter with Different Names

What will you learn?

In this tutorial, you will master the art of opening a second window in Tkinter with a unique name, distinct from the default ‘Tk’. You will understand how to create and manage multiple windows effectively in your Tkinter applications.

Introduction to the Problem and Solution

In Tkinter, when dealing with multiple windows, all additional windows are initially named as ‘Tk’ by default. This can lead to confusion and hinder proper window management. To address this issue, custom names must be assigned to each window for clear identification and seamless handling.

To resolve this challenge, we leverage the Toplevel class in Tkinter. The Toplevel class empowers us to generate supplementary windows on top of the primary root window (‘Tk’). By associating unique names with these new windows, we can easily reference them in our codebase, facilitating efficient window management.


import tkinter as tk

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

# Create a second window with a custom name 'Second Window'
second_window = tk.Toplevel(root)
second_window.title('Second Window')

# Display both windows

# Copyright PHD

Note: You can execute this code snippet on your local machine or utilize an online Python compiler like


The provided code snippet functions as follows: 1. Import the tkinter module under alias tk. 2. Establish the main root window using tk.Tk(). 3. Instantiate a secondary window via tk.Toplevel(root), where root serves as its parent (main) window. 4. Set a personalized title for the second window using .title(‘Second Window’).

By implementing this approach, two distinct windows are created � one being the primary root and another serving as a secondary window named ‘Second Window’.

Benefits of Using Toplevel:

  • Isolated Windows: Each instance of Toplevel() generates an autonomous secondary dialog/window.
  • Customization Options: You have the flexibility to tailor properties such as title, dimensions, positioning, etc., for every additional window produced.
    How can I close specific Toplevel windows?

    You can close any particular Toplevel window by invoking the .destroy() method on its corresponding object.

    Can I nest Toplevel instances within other Toplevel instances?

    Certainly! You can establish hierarchy by setting one Toplevel’s parent as another Toplevel or even RootWindow itself.

    Is it feasible to modify properties post creation of new windows?

    Absolutely! You can alter properties like title or geometry subsequent to creating new windows utilizing appropriate methods provided by tkinter.

    Are there constraints on the quantity of Toplevel instances that can be generated?

    The number of secondary dialog boxes isn’t restricted by Tkinter but is subject to runtime system resources availability.

    How do I prevent users from resizing my additional windows?

    You can inhibit resizing behavior through attributes like .resizable(width=False,height=False) while instigating each new Tplevel instance.


    In conclusion, assigning distinctive names to supplementary windows beyond the default ‘Tk’ nomenclature is pivotal for streamlined organization and enhanced user experience within Tkinter applications. Through adept utilization of the Toplevel class and personalized titles for these extra windows, you elevate usability and clarity in your GUI designs.

    Leave a Comment