Ir para conteúdo
Fórum Script Brasil

Guilherme Fierli Castanha

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Sobre Guilherme Fierli Castanha

Guilherme Fierli Castanha's Achievements

0

Reputação

  1. 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.")
×
×
  • Criar Novo...