Resumo : neste tutorial, você aprenderá como criar múltiplas janelas em uma aplicação Tkinter usando a classe Tkinter Toplevel.
Introdução à janela de nível superior do Tkinter
Em uma aplicação Tkinter, a instância da Tk
classe representa a janela principal .
Quando você destrói a janela principal, o aplicativo é encerrado e o loop de eventos é concluído.
Às vezes, você precisa criar janelas adicionais. Por exemplo, você pode querer criar uma caixa de diálogo personalizada ou um formulário de assistente.
Para fazer isso, você pode usar janelas de nível superior que são instâncias da Toplevel
classe.
Ao contrário da janela principal, você pode criar quantas janelas de nível superior desejar.
Para mostrar uma Toplevel
janela da janela principal, siga estas etapas:
Primeiro, crie uma instância da Toplevel
classe e defina seu pai para a janela raiz:
window = tk.Toplevel(root)
Linguagem de código: Python ( python )
No momento em que você cria a Toplevel
janela, ela será exibida na tela.
Segundo, adicione widgets à Toplevel
janela como você faz com os frames e a janela principal .
Terceiro, chame o grab_set()
método da Toplevel
instância da janela para permitir que ela receba eventos e evite que os usuários interajam com a janela principal:
window.grab_set()
Linguagem de código: Python ( python )
Um exemplo simples de janela de nível superior do Tkinter
O programa a seguir exibe uma janela que possui um botão :
Ao clicar no botão, uma janela será aberta Toplevel
. A Toplevel
janela também consiste em um botão.
Se você clicar ou pressionar o Close
botão, a Toplevel
janela será fechada.
import tkinter as tk
from tkinter import ttk
class Window(tk.Toplevel):
def __init__(self, parent):
super().__init__(parent)
self.geometry('300x100')
self.title('Toplevel Window')
ttk.Button(self,
text='Close',
command=self.destroy).pack(expand=True)
class App(tk.Tk):
def __init__(self):
super().__init__()
self.geometry('300x200')
self.title('Main Window')
# place a button on the root window
ttk.Button(self,
text='Open a window',
command=self.open_window).pack(expand=True)
def open_window(self):
window = Window(self)
window.grab_set()
if __name__ == "__main__":
app = App()
app.mainloop()
Linguagem de código: Python ( python )
Como funciona.
Primeiro, defina uma classe Window
que herde da Toplevel
janela. O Window
será fechado assim que o Close
botão for clicado.
Segundo, atribua o comando do botão Abrir uma janela ao open_window()
método na App
classe
Terceiro, no open_window()
método, crie uma nova instância Window
e chame o grab_set()
método para que ele possa receber eventos. O grab_set()
método também impede que os usuários interajam com a janela principal.
Resumo
- Mostre janelas adicionais criando instâncias da
Toplevel
classe. - Use
grab_set()
o método para que aToplevel
janela possa receber eventos e evite que os usuários interajam com a janela principal.