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

Jinku Hu 25 junio 2020
Cómo crear una nueva ventana haciendo clic en un botón de Tkinter

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.

Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Artículo relacionado - Tkinter Button