import tkinter as tk
from tkinter.messagebox import showerror
from typing import Union

from storage.Pipe import Pipe
from widgets.Widget import Widget


class Popup(Widget):
    @staticmethod
    def error(title: str, message: str, **options):
        """
        Método que cria um popup de erro
        :param title: Titulo do Popup
        :param message: Mensagem do Popup
        :param options: Parametros de opções extras
        :return:
        """
        return showerror(title, message, **options)

    @staticmethod
    def newProject(window: tk.Tk):
        """
        Método que cria um popup para a criação do projeto
        :param window: Instância da janela
        :return:
        """
        def getInputs():
            """
            Função que pega os valores dos inputs
            :return:
            """
            popup.widget.destroy()

        popup = Popup(window)
        popup.render()

        #Criação dos widgets do popup
        frmInput = tk.Frame(popup.frame)
        frmInput.pack(fill=tk.BOTH)

        tk.Button(popup.frame, text="Criar Projeto", command=getInputs).pack()

        return popup

    def __init__(self, parent: Union[tk.Tk, tk.Frame]):
        super().__init__(parent)
        self.frame = None
        self.data = Pipe()

    def render(self):
        """
        Método que renderiza o popup
        :return:
        """
        self.widget = tk.Toplevel(self.parent)
        self.frame = tk.Frame(self.widget)
        self.frame.pack()

import tkinter as tk
from tkinter.messagebox import showerror
from typing import Union

from storage.Pipe import Pipe
from widgets.Widget import Widget


class Popup(Widget):
    @staticmethod
    def error(title: str, message: str, **options):
        """
        Método que cria um popup de erro
        :param title: Titulo do Popup
        :param message: Mensagem do Popup
        :param options: Parametros de opções extras
        :return:
        """
        return showerror(title, message, **options)

    @staticmethod
    def newProject(window: tk.Tk):
        """
        Método que cria um popup para a criação do projeto
        :param window: Instância da janela
        :return:
        """
        def getInputs():
            """
            Função que pega os valores dos inputs
            :return:
            """
            popup.widget.destroy()

        popup = Popup(window)
        popup.render()

        #Criação dos widgets do popup
        frmInput = tk.Frame(popup.frame)
        frmInput.pack(fill=tk.BOTH)

        tk.Button(popup.frame, text="Criar Projeto", command=getInputs).pack()

        return popup

    def __init__(self, parent: Union[tk.Tk, tk.Frame]):
        super().__init__(parent)
        self.frame = None
        self.data = Pipe()

    def render(self):
        """
        Método que renderiza o popup
        :return:
        """
        self.widget = tk.Toplevel(self.parent)
        self.frame = tk.Frame(self.widget)
        self.frame.pack()

Método que cria um popup de erro         :param title: Titulo do Popup         :param message: Mensagem do Popup         :param options: Parametros de opções extras         :return: Método que cria um popup para a criação do projeto         :param window: Instância da janela         :return: Função que pega os valores dos inputs             :return: #Criação dos widgets do popup Método que renderiza o popup         :return: