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

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

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