54 lines
2.1 KiB
Python
54 lines
2.1 KiB
Python
import tkinter as tk
|
|
from tkinter import messagebox
|
|
|
|
class DialogoAdicionarPet(tk.Toplevel):
|
|
def __init__(self, parent):
|
|
super().__init__(parent)
|
|
self.transient(parent)
|
|
self.title("Adicionar Novo Pet")
|
|
self.parent = parent
|
|
self.result = None
|
|
|
|
body = tk.Frame(self, padx=15, pady=15)
|
|
self.initial_focus = self.criar_formulario(body)
|
|
body.pack()
|
|
|
|
self.criar_botoes()
|
|
|
|
self.grab_set() # Torna a janela modal
|
|
self.protocol("WM_DELETE_WINDOW", self._on_cancel)
|
|
self.geometry(f"+{parent.winfo_rootx()+50}+{parent.winfo_rooty()+50}")
|
|
self.initial_focus.focus_set()
|
|
self.wait_window(self) # Pausa a execução até que a janela seja fechada
|
|
|
|
def criar_formulario(self, master):
|
|
tk.Label(master, text="Nome:").grid(row=0, column=0, sticky="w", pady=3)
|
|
self.nome_entry = tk.Entry(master, width=30)
|
|
self.nome_entry.grid(row=0, column=1, padx=5, pady=3)
|
|
|
|
tk.Label(master, text="Espécie:").grid(row=1, column=0, sticky="w", pady=3)
|
|
self.especie_entry = tk.Entry(master, width=30)
|
|
self.especie_entry.grid(row=1, column=1, padx=5, pady=3)
|
|
|
|
return self.nome_entry # Define o foco inicial
|
|
|
|
def criar_botoes(self):
|
|
box = tk.Frame(self, pady=5)
|
|
tk.Button(box, text="Adicionar", width=10, command=self._on_ok, default=tk.ACTIVE).pack(side=tk.LEFT, padx=5)
|
|
tk.Button(box, text="Cancelar", width=10, command=self._on_cancel).pack(side=tk.LEFT, padx=5)
|
|
self.bind("<Return>", self._on_ok)
|
|
self.bind("<Escape>", self._on_cancel)
|
|
box.pack()
|
|
|
|
def _on_ok(self, event=None):
|
|
nome = self.nome_entry.get().strip()
|
|
especie = self.especie_entry.get().strip()
|
|
if not nome or not especie:
|
|
messagebox.showwarning("Campos Vazios", "Por favor, preencha o nome e a espécie.", parent=self)
|
|
return
|
|
self.result = {"nome": nome, "especie": especie}
|
|
self._on_cancel()
|
|
|
|
def _on_cancel(self, event=None):
|
|
self.parent.focus_set()
|
|
self.destroy() |