Come creare una nuova finestra cliccando un pulsante in Tkinter

In questo tutorial vi mostreremo come creare e aprire una nuova finestra di Tkinter cliccando su un pulsante in Tkinter.

Creare una nuova finestra 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 usiamo tk.Tk() per creare una nuova finestra Tkinter, ma non è valida se abbiamo già creato una finestra root come mostrato nei codici precedenti.

Toplevel è il widget giusto in questa circostanza, in quanto il widget Toplevel è destinato a visualizzare finestre pop-up aggiuntive.

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

Esso lega la funzione createNewWindow al pulsante.

La nuova finestra è una finestra vuota nell’esempio precedente e si potrebbero aggiungere altri widget, proprio come aggiungere widget in una normale finestra di root, ma è necessario cambiare il widget padre con la finestra Toplevel creata.

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()

Come si può vedere, labelExample e buttonExample hanno il loro widget padre come newWindow ma non app.

Articolo correlato - Tkinter Button

  • Come legare più comandi al pulsante Tkinter
  • Come cambiare lo stato del pulsante Tkinter