Nível superior do Tkinter

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 Tkclasse 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 Toplevelclasse.

Ao contrário da janela principal, você pode criar quantas janelas de nível superior desejar.

Para mostrar uma Topleveljanela da janela principal, siga estas etapas:

Primeiro, crie uma instância da Toplevelclasse 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 Topleveljanela, ela será exibida na tela.

Segundo, adicione widgets à Topleveljanela como você faz com os frames e a janela principal .

Terceiro, chame o grab_set()método da Toplevelinstâ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 Topleveljanela também consiste em um botão.

Se você clicar ou pressionar o Closebotão, a Topleveljanela 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 Topleveljanela. O Windowserá fechado assim que o Closebotão for clicado.

Segundo, atribua o comando do botão Abrir uma janela ao open_window()método na Appclasse

Terceiro, no open_window()método, crie uma nova instância Windowe 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 Toplevelclasse.
  • Use grab_set()o método para que a Topleveljanela possa receber eventos e evite que os usuários interajam com a janela principal.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *