Come creare una nuova finestra cliccando un pulsante in Tkinter

Jinku Hu 25 giugno 2020
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.

Autore: 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

Articolo correlato - Tkinter Button