HOWTO · Tkinter

Cómo crear una nueva ventana haciendo clic en un botón de Tkinter

Este tutorial muestra cómo crear y abrir una nueva ventana pulsando un botón en Tkinter

En esta página

En este tutorial, le mostraremos cómo crear y abrir una nueva ventana de Tkinter haciendo clic en un botón de Tkinter.

Crear una nueva ventana de Tkinter

import tkinter as tk


def createNewWindow():
    newWindow = tk.Toplevel(app)


app = tk.Tk()
buttonExample = tk.Button(app, text="Create new window", command=createNewWindow)
buttonExample.pack()

app.mainloop()

Normalmente utilizamos tk.Tk() para crear una nueva ventana de Tkinter, pero no es válido si ya hemos creado una ventana raíz como se muestra en los códigos anteriores.

El widget Toplevel es el correcto en esta circunstancia, ya que el widget Toplevel está pensado para mostrar ventanas pop-up adicionales.

buttonExample = tk.Button(app, text="Create new window", command=createNewWindow)

Vincula la función createNewWindow al botón.

La nueva ventana es una ventana vacía en el ejemplo de arriba y puedes añadirle más widgets como si fuera una ventana raíz normal, pero necesitas cambiar el widget padre a la ventana Toplevel creada.

import tkinter as tk


def createNewWindow():
    newWindow = tk.Toplevel(app)
    labelExample = tk.Label(newWindow, text="New Window")
    buttonExample = tk.Button(newWindow, text="New Window button")

    labelExample.pack()
    buttonExample.pack()


app = tk.Tk()
buttonExample = tk.Button(app, text="Create new window", command=createNewWindow)
buttonExample.pack()

app.mainloop()

Como puedes ver, labelExample y buttonExample tienen su widget padre como newWindow pero no como app.