Guilherme Fierli Castanha Postado Julho 8, 2023 Denunciar Share Postado Julho 8, 2023 boa tarde estou enfrentando erro neste projeto MVC que fiz ide alega que ouve estouro de pilha só que não estou achando o erro e se tiver algum outro erro no código vocês poderem informar agradeceria meus códigos do meu projeto: código main: import tkinter from controller import CadastroController, LoginController, RegistroController, VendasController from model import LoginModel def main(): login_model = LoginModel() login_controller = LoginController(login_model) cadastro_controller = CadastroController() vendas_controller = VendasController() registro_controller = RegistroController() tkinter.mainloop() if __name__ == "__main__": main() codigo view : import tkinter as tk from tkinter import messagebox import tkinter as tk class TelaLoginView(tk.Tk): def __init__(self, controller): super().__init__() # Chamar o construtor da classe pai self.controller = controller self.title("Tela de Login") email_label = tk.Label(self, text="Seu email:") email_label.grid(row=0, column=0, padx=5, pady=5) senha_label = tk.Label(self, text="Sua senha:") senha_label.grid(row=1, column=0, padx=5, pady=5) self.email_entry = tk.Entry(self) self.email_entry.grid(row=0, column=1, padx=5, pady=5) self.senha_entry = tk.Entry(self, show="*") self.senha_entry.grid(row=1, column=1, padx=5, pady=5) manter_logado_var = tk.IntVar() manter_logado_checkbox = tk.Checkbutton(self, text="Manter-me logado", variable=manter_logado_var) manter_logado_checkbox.grid(row=2, column=0, columnspan=2, padx=5, pady=5) entrar_btn = tk.Button(self, text="Entrar", command=self.realizar_login) entrar_btn.grid(row=3, column=0, columnspan=2, padx=5, pady=5) cadastrar_link = tk.Button(self, text="Cadastrar", command=self.abrir_cadastro) cadastrar_link.grid(row=4, column=0, columnspan=2, padx=5, pady=5) self.venda_button = tk.Button(self, text="Vendas", command=self.abrir_vendas) self.venda_button.grid(row=20, column=0, columnspan=2, pady=12) self.controller = controller class TelaCadastroView(tk.Toplevel): def __init__(self, controller): self.controller = controller self.title("Cadastro de Automóvel") nome_cliente_label = tk.Label(self, text="Nome Cliente:") nome_cliente_label.grid(row=0, column=0, padx=5, pady=5) modelo_label = tk.Label(self, text="Modelo:") modelo_label.grid(row=1, column=0, padx=5, pady=5) km_label = tk.Label(self, text="KM:") km_label.grid(row=2, column=0, padx=5, pady=5) num_chassi_label = tk.Label(self, text="Nº Chassi:") num_chassi_label.grid(row=3, column=0, padx=5, pady=5) carroceria_label = tk.Label(self, text="Carroceria:") carroceria_label.grid(row=4, column=0, padx=5, pady=5) marca_label = tk.Label(self, text="Marca:") marca_label.grid(row=5, column=0, padx=5, pady=5) ano_label = tk.Label(self, text="Ano:") ano_label.grid(row=6, column=0, padx=5, pady=5) valor_fipe_label = tk.Label(self, text="Valor FIPE:") valor_fipe_label.grid(row=7, column=0, padx=5, pady=5) cor_label = tk.Label(self, text="Cor:") cor_label.grid(row=8, column=0, padx=5, pady=5) combustivel_label = tk.Label(self, text="Combustível:") combustivel_label.grid(row=9, column=0, padx=5, pady=5) cambio_label = tk.Label(self, text="Câmbio:") cambio_label.grid(row=10, column=0, padx=5, pady=5) self.nome_cliente_entry = tk.Entry(self) self.nome_cliente_entry.grid(row=0, column=1, padx=5, pady=5) self.modelo_entry = tk.Entry(self) self.modelo_entry.grid(row=1, column=1, padx=5, pady=5) self.km_entry = tk.Entry(self) self.km_entry.grid(row=2, column=1, padx=5, pady=5) self.num_chassi_entry = tk.Entry(self) self.num_chassi_entry.grid(row=3, column=1, padx=5, pady=5) self.carroceria_entry = tk.Entry(self) self.carroceria_entry.grid(row=4, column=1, padx=5, pady=5) self.marca_entry = tk.Entry(self) self.marca_entry.grid(row=5, column=1, padx=5, pady=5) self.ano_entry = tk.Entry(self) self.ano_entry.grid(row=6, column=1, padx=5, pady=5) self.valor_fipe_entry = tk.Entry(self) self.valor_fipe_entry.grid(row=7, column=1, padx=5, pady=5) self.cor_entry = tk.Entry(self) self.cor_entry.grid(row=8, column=1, padx=5, pady=5) self.combustivel_entry = tk.Entry(self) self.combustivel_entry.grid(row=9, column=1, padx=5, pady=5) self.cambio_entry = tk.Entry(self) self.cambio_entry.grid(row=10, column=1, padx=5, pady=5) self.save_button = tk.Button(self, text="Salvar", command=self.save_car) self.save_button.grid(row=22, column=0, columnspan=2, pady=10) self.controller = controller class TelaVendasView(tk.Toplevel): def __init__(self, controller): self.title("Tela de Vendas") self.controller = controller cliente_label = tk.Label(self, text="Cliente:") cliente_label.grid(row=0, column=0, padx=5, pady=5, sticky="e") venda_label = tk.Label(self, text="Venda:") venda_label.grid(row=1, column=0, padx=5, pady=5, sticky="e") documento_label = tk.Label(self, text="Documento:") documento_label.grid(row=2, column=0, padx=5, pady=5, sticky="e") data_venda_label = tk.Label(self, text="Data da Venda:") data_venda_label.grid(row=3, column=0, padx=5, pady=5, sticky="e") data_fim_mov_label = tk.Label(self, text="Data Fim Movi:") data_fim_mov_label.grid(row=4, column=0, padx=5, pady=5, sticky="e") valor_venda_label = tk.Label(self, text="Valor da Venda:") valor_venda_label.grid(row=5, column=0, padx=5, pady=5, sticky="e") obs_label = tk.Label(self, text="Observações:") obs_label.grid(row=6, column=0, padx=5, pady=5, sticky="e") self.cliente_entry = tk.Entry(self) self.cliente_entry.grid(row=0, column=1, padx=5, pady=5) self.venda_entry = tk.Entry(self) self.venda_entry.grid(row=1, column=1, padx=5, pady=5) self.documento_entry = tk.Entry(self) self.documento_entry.grid(row=2, column=1, padx=5, pady=5) self.data_venda_entry = tk.Entry(self) self.data_venda_entry.grid(row=3, column=1, padx=5, pady=5) self.data_fim_mov_entry = tk.Entry(self) self.data_fim_mov_entry.grid(row=4, column=1, padx=5, pady=5) self.valor_venda_entry = tk.Entry(self) self.valor_venda_entry.grid(row=5, column=1, padx=5, pady=5) self.obs_entry = tk.Entry(self) self.obs_entry.grid(row=6, column=1, padx=5, pady=5) self.venda_button = tk.Button(self, text="Finalizar", command=self.controller.save_venda) self.venda_button.grid(row=22, column=0, columnspan=2, pady=10) self.registro_button = tk.Button(self, text="Abrir Registro", command=self.controller.abrir_cadastro) self.registro_button.grid(row=7, column=0, columnspan=2, pady=10) class TelaRegistroView(tk.Toplevel): def __init__(self, controller): self.title("Tela de Registro") self.controller = controller periodolabel = tk.Label(self, text="Período:") periodolabel.grid(row=0, column=0, padx=5, pady=5, sticky="e") tipomovimentacaolabel = tk.Label(self, text="Tipo de Movimentação:") tipomovimentacaolabel.grid(row=1, column=0, padx=5, pady=5, sticky="e") datainiciallabel = tk.Label(self, text="Data Inicial:") datainiciallabel.grid(row=2, column=0, padx=5, pady=5, sticky="e") datafinallabel = tk.Label(self, text="Data Final:") datafinallabel.grid(row=3, column=0, padx=5, pady=5, sticky="e") self.periodoentry = tk.Entry(self) self.periodoentry.grid(row=0, column=1, padx=5, pady=5) self.tipomovimentacao_entry = tk.Entry(self) self.tipomovimentacao_entry.grid(row=1, column=1, padx=5, pady=5) self.datainicial_entry = tk.Entry(self) self.datainicial_entry.grid(row=2, column=1, padx=5, pady=5) self.datafinal_entry = tk.Entry(self) self.datafinal_entry.grid(row=3, column=1, padx=5, pady=5) self.consultar_button = tk.Button(self, text="Consultar", command=lambda: self.controller.consultar_registros(self.periodoentry.get(), self.tipomovimentacao_entry.get())) self.consultar_button.grid(row=22, column=0, columnspan=2, pady=10) self.gerar_relatorio_button = tk.Button(self, text="Gerar Relatório", command=lambda: self.controller.gerar_relatorio(self.periodoentry.get(), self.tipomovimentacao_entry.get())) self.gerar_relatorio_button.grid(row=7, column=0, columnspan=2, pady=10) imprimirbutton = tk.Button(self, text="Imprimir", command=self.controller.imprimir_relatorio) imprimirbutton.grid(row=4, column=2, padx=5, pady=5) codigo controller: from tkinter import messagebox from view import TelaLoginView, TelaCadastroView, TelaVendasView, TelaRegistroView from model import LoginModel, CadastroModel, VendasModel, RegistroModel class LoginController: def __init__(self, model): self.model = model self.view = TelaLoginView(self) class CadastroController: def __init__(self, model): self.model = model self.view = TelaCadastroView(self) class VendasController: def __init__(self, model): self.model = model self.view = TelaVendasView(self) class RegistroController: def __init__(self, model): self.model = model self.view = TelaRegistroView(self) def consultar_registros(self, periodo, tipo_movimentacao, data_inicial, data_final): registros = self.model.consultar_registros(periodo, tipo_movimentacao, data_inicial, data_final) self.view.mostrar_registros(registros) def gerar_relatorio(self, periodo, tipo_movimentacao, data_inicial, data_final): relatorio = self.model.gerar_relatorio(periodo, tipo_movimentacao, data_inicial, data_final) self.view.mostrar_relatorio(relatorio) def imprimir_relatorio(self, relatorio): self.model.imprimir_relatorio(relatorio) messagebox.showinfo("Impressão", "O relatório foi enviado para a impressora.") codigo Model: from datetime import datetime from tkinter import messagebox class LoginModel: def validate_login(self, username, password): if username != "" and password != "": return True else: return False class CadastroModel: def save_car(self, car_data): car_data = { "nome_cliente": self.nome_cliente_entry.get(), "modelo": self.modelo_entry.get(), "km": self.km_entry.get(), "num_chassi": self.num_chassi_entry.get(), "carroceria": self.carroceria_entry.get(), "marca": self.marca_entry.get(), "ano": self.ano_entry.get(), "valor_fipe": self.valor_fipe_entry.get(), "cor": self.cor_entry.get(), "combustivel": self.combustivel_entry.get(), "cambio": self.cambio_entry.get(), } self.controller.save_car(car_data) messagebox.showinfo("Cadastro de Automóvel", "Automóvel cadastrado com sucesso!") class VendasModel: def save_venda(self, venda_data): venda_data = { "cliente": self.view.cliente_entry.get(), "venda": self.view.venda_entry.get(), "documento": self.view.documento_entry.get(), "data_venda": self.view.data_venda_entry.get(), "data_fim_mov": self.view.data_fim_mov_entry.get(), "valor_venda": self.view.valor_venda_entry.get(), "obs": self.view.obs_entry.get() } self.model.save_venda(venda_data) messagebox.showinfo("Vendas", "Venda salva com sucesso!") class RegistroModel: def consultar_registros(self, periodo, tipo_movimentacao, data_inicial, data_final): registros = [ {"id": 1, "data": datetime.now(), "descricao": "Registro 1"}, {"id": 2, "data": datetime.now(), "descricao": "Registro 2"}, {"id": 3, "data": datetime.now(), "descricao": "Registro 3"}, ] return registros def gerar_relatorio(self, periodo, tipo_movimentacao, data_inicial, data_final): periodo = self.view.periodoentry.get() tipo_movimentacao = self.view.tipomovimentacao_entry.get() data_inicial = self.view.datainicial_entry.get() data_final = self.view.datafinal_entry.get() relatorio = self.model.gerar_relatorio(periodo, tipo_movimentacao, data_inicial, data_final) self.view.mostrar_relatorio(relatorio) def imprimir_relatorio(self, relatorio): periodo = self.view.periodoentry.get() tipo_movimentacao = self.view.tipomovimentacao_entry.get() data_inicial = self.view.datainicial_entry.get() data_final = self.view.datafinal_entry.get() relatorio = self.model.gerar_relatorio(periodo, tipo_movimentacao, data_inicial, data_final) self.model.imprimir_relatorio(relatorio) messagebox.showinfo("Impressão", "O relatório foi enviado para a impressora.") Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ArteEN Postado Julho 8, 2023 Denunciar Share Postado Julho 8, 2023 aparentemente o script não esta completo, ao tentar executar indica que falta metodos. como realizar_login Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Guilherme Fierli Castanha
boa tarde estou enfrentando erro neste projeto MVC que fiz ide alega que ouve estouro de pilha só que não estou achando o erro e se tiver algum outro erro no código vocês poderem informar agradeceria meus códigos do meu projeto:
código main:
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.