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("", self._on_ok) self.bind("", 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()