Ir para conteúdo
Fórum Script Brasil

Guilherme Fierli Castanha

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Tudo que Guilherme Fierli Castanha postou

  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...