Como criar uma nova janela clicando em um botão no Tkinter

Como criar uma nova janela clicando em um botão no Tkinter

Neste tutorial, vamos mostrar-lhe como criar e abrir uma nova janela do Tkinter, clicando num botão no Tkinter.

Criar uma nova janela do 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 criar uma nova janela Tkinter, mas ela não é válida se já tivermos criado uma janela raiz, como mostrado nos códigos acima.

O Toplevel é o widget certo nesta circunstância, pois o widget Toplevel tem a intenção de exibir janelas extra pop-up.

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

Ele liga a função createNewWindow ao botão.

A nova janela é uma janela vazia no exemplo acima e você poderia adicionar mais widgets a ela assim como adicionar widgets em uma janela raiz normal, mas precisa mudar o widget pai para a janela criada Toplevel.

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 você pode ver, labelExample e buttonExample têm seus widgets pai como newWindow mas não como app.

Está gostando dos nossos tutoriais? Inscreva-se no DelftStack no YouTube para nos apoiar na criação de mais vídeos tutoriais de alta qualidade. Inscrever-se
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

Artigo relacionado - Tkinter Button