Tkinter é uma biblioteca Python popular para criar interfaces gráficas de usuário (GUIs). Uma tarefa comum é adicionar um botão que permite aos usuários fechar a janela de forma limpa. Este artigo explora vários métodos para alcançar isso, destacando suas diferenças e recomendando as melhores práticas.
Sumário
- Usando o método
destroy()
- Chamando
destroy()
diretamente - Usando o método
quit()
- Abordagem Recomendada
Usando o método destroy()
A abordagem mais comum e recomendada usa o método destroy()
. Este método está associado ao objeto da janela principal (tipicamente chamado de root
) e fecha a janela Tkinter de forma limpa, liberando os recursos associados.
import tkinter as tk
root = tk.Tk()
root.title("Exemplo de Fechamento de Janela")
def fechar_janela():
root.destroy()
botao = tk.Button(root, text="Fechar Janela", command=fechar_janela)
botao.pack(pady=20)
root.mainloop()
Este código define uma função fechar_janela()
que chama root.destroy()
. Esta função é então vinculada ao atributo command
do botão. Clicar no botão executa fechar_janela()
, levando ao fechamento da janela.
Chamando destroy()
diretamente
Para aplicativos mais simples, você pode atribuir root.destroy
diretamente ao atributo command
do botão, eliminando a necessidade de uma função separada:
import tkinter as tk
root = tk.Tk()
root.title("Exemplo de Fechamento de Janela")
botao = tk.Button(root, text="Fechar Janela", command=root.destroy)
botao.pack(pady=20)
root.mainloop()
Isso é mais conciso, mas pode reduzir a legibilidade em projetos maiores.
Usando o método quit()
O método quit()
difere de destroy()
. quit()
apenas interrompe o loop principal de eventos, enquanto destroy()
realmente destrói a janela e seus widgets. quit()
é útil para cenários mais complexos em que você precisa de um controle mais preciso sobre o processo de fechamento, como a limpeza de recursos antes da janela ser destruída. No entanto, para o fechamento simples da janela, destroy()
é preferível. O uso inadequado de quit()
pode deixar processos órfãos.
import tkinter as tk
root = tk.Tk()
root.title("Exemplo de Fechamento de Janela")
def fechar_janela():
root.quit()
botao = tk.Button(root, text="Fechar Janela", command=fechar_janela)
botao.pack(pady=20)
root.mainloop()
Isso demonstra root.quit()
, mas root.destroy()
permanece a opção mais segura e limpa para a maioria dos casos.
Abordagem Recomendada
Embora existam vários métodos, root.destroy()
oferece a maneira mais direta e confiável de fechar uma janela Tkinter com um botão na maioria dos aplicativos. Sua simplicidade e comportamento claro o tornam a escolha preferida, a menos que seu aplicativo exija o controle mais preciso oferecido por root.quit()
.