def get_Aluno(self,event): self.notaList.delete(*self.notaList.get_children()) notas = self.notaCRUD.consultar_por_matricula(self.buscaEdit.get()) if (len(notas)>0): item = self.notaList.selection() for item in notas: fk_aluno_id = item[0] fk_disciplina_id = item[1] av1 = item[2] av2 = item[3] av3 = item[4] media = item[5] if fk_aluno_id == self.buscaEdit.get(): self.notaList.insert('','end',values=(str(fk_aluno_id),fk_disciplina_id,av1,av2,av3,media)) else: notas != self.buscaEdit.get() id_aluno = Aluno() self.alunoResult = id_aluno.consultar_por_matricula(self.buscaEdit.get()) lista = id_aluno.consultar_por_matricula(self.buscaEdit.get()) item = self.notaList.selection() for item in lista: fk_aluno_id = item[1] #deleta os campos prenchidos do formulario #self.alunoEdit.configure(state=NORMAL) self.alunoEdit.delete(0, tk.END) self.alunoEdit.insert(0, fk_aluno_id) #self.alunoEdit.configure(state=DISABLED) self.av1Edit.delete(0, tk.END) self.av2Edit.delete(0, tk.END) self.av3Edit.delete(0, tk.END) self.mediaEdit.delete(0, tk.END) self.buscaEdit.delete(0, tk.END) self.notaList.insert('','end',values=(str(fk_aluno_id),)) self.buscaEdit.insert(0, 'Digite sua Matrica') self.buscaEdit.configure(state=DISABLED) self.buscaEdit.bind('<Button-1>', self._on_click)
class Alunowin: def __init__(self,win,): self.alunoCRUD = Aluno() vcmd = (win.register(self.no_str)) yes = (win.register(self.yes_str)) #Criar os componentes de tela self.alunoed2Label = tk.Label(win, text='_______________', background='#292826',foreground='#F1780e') self.alunoedLabel = tk.Label(win, text='______________________________________',background='#292826',foreground='#F1780e') self.alunoLabel = tk.Label(win, text='ALUNO',font="Bold 17", background='#292826',foreground='#F1780e') self.nomeLabel = tk.Label(win, text='* Nome',font="Bold 10", background='#292826',foreground='#F1780e') self.nomeEdit = tk.Entry(width = 32, bd=1,bg='#dde',validate='all',validatecommand=(yes,'%S')) self.idadeLabel = tk.Label(win, text='Idade',font="Bold 10", background='#292826',foreground='#F1780e') self.idadeEdit = tk.Entry(width = 32, bd=1,bg='#dde',validate='all',validatecommand=(vcmd,'%P')) self.cpfLabel = tk.Label(win, text='* CPF',font="Bold 10", background='#292826',foreground='#F1780e') self.cpfEdit = tk.Entry(width = 32, bd=1,bg='#dde',validate='all',validatecommand=(vcmd,'%P')) self.matriculaLabel = tk.Label(win, text='* Matricula',font="Bold 10", background='#292826',foreground='#F1780e') self.matriculaEdit = tk.Entry(width = 32, bd=1,bg='#dde',validate='all',validatecommand=(vcmd,'%P')) self.emailLabel = tk.Label(win, text='* E-mail',font="Bold 10", background='#292826',foreground='#F1780e') self.emailEdit = tk.Entry(width = 32, bd=1,bg='#dde') self.enderecoLabel = tk.Label(win, text='Endereço',font="Bold 10", background='#292826',foreground='#F1780e') self.enderecoEdit = tk.Entry(width = 32, bd=1,bg='#dde') #------------# # Boloes #------------# self.buscaEdit = tk.Entry(width=85, bd=1,bg='#dde') self.buscaEdit.insert(0, 'Digite sua Matricula') self.buscaEdit.configure(state=DISABLED) self.buscaEdit.bind('<Button-1>', self._on_click_placehold) self.buscaEdit.bind("<Return>",(lambda Event: self.buscar(self.buscaEdit.get()))) #------------# # botoes s #------------# self.btnlista = tk.Button(win, text='Lista',bg='#dde',command=self.carregar_dados_iniciais_treeView, bd=0) self.btnbusca = tk.Button(win, text='Busca',bg='#dde',command=(lambda : self.buscar(self.buscaEdit.get())), bd=0) self.btnCadastrar = tk.Button(win, text = 'Salvar',bg='#dde', width = 7, command=self._on_cadastrar_clicked, bd=1) self.btnAlterar = tk.Button(win, text = 'Editar',bg='#dde', width = 7, command=self._on_atualizar_clicked, bd=1) self.btnExcluir = tk.Button(win, text = 'Excluir',bg='#dde', width = 7, command=self._on_deletar_clicked, bd=1) self.alunoList = ttk.Treeview(win, columns=(1,2,3,4,5,6,7), show='headings') self.verscrlbar = ttk.Scrollbar(win,orient="vertical", command=self.alunoList.yview) self.verscrlbar.pack(side = 'right', fill='x') self.alunoList.configure(yscrollcommand = self.verscrlbar.set) self.alunoList.heading(1, text='ID') self.alunoList.heading(2, text='Nome') self.alunoList.heading(3, text='Idade') self.alunoList.heading(4, text='CPF') self.alunoList.heading(5, text='Matricula') self.alunoList.heading(6, text='E-mail') self.alunoList.heading(7, text='Endereço') self.alunoList.column(1, minwidth=0, width=0) self.alunoList.column(2, minwidth=0, width=200) self.alunoList.column(3, minwidth=0, width=45) self.alunoList.column(4, minwidth=0, width=100) self.alunoList.column(5, minwidth=0, width=100) self.alunoList.column(6, minwidth=0, width=150) self.alunoList.column(7, minwidth=0, width=200) self.alunoList.pack() self.alunoList.bind("<<TreeviewSelect>>", self._on_mostrar_clicked) #Posicionar os componentes na tela self.alunoed2Label.place(x=440,y=80) self.alunoedLabel.place(x=380,y=20) self.alunoLabel.place(x=440,y=50) self.nomeLabel.place(x=161,y=130) self.nomeEdit.place(x=220,y=130) self.idadeLabel.place(x=170,y=160) self.idadeEdit.place(x=220,y=160) self.emailLabel.place(x=161,y=190) self.emailEdit.place(x=220,y=190) self.cpfLabel.place(x=451,y=130) self.cpfEdit.place(x=530,y=130) self.matriculaLabel.place(x=451,y=160) self.matriculaEdit.place(x=530,y=160) self.enderecoLabel.place(x=460,y=190) self.enderecoEdit.place(x=530,y=190) self.buscaEdit.place(x=295,y=300) #-------- # Posicionamnto dos Botoes #-------- self.btnlista.place(x=865,y=298) self.btnbusca.place(x=820,y=298) self.btnCadastrar.place(x=670,y=250) self.btnAlterar.place(x=600,y=250) self.btnExcluir.place(x=530,y=250) self.alunoList.place(x=70,y=330) self.verscrlbar.place(x=880,y=330, height=230) self.carregar_dados_iniciais_treeView() #-------- # Funções #-------- def no_str(self, P): #somente numeros if str.isdigit(P) or P=="": return True else: return False def yes_str(self, S): #somente caracter if str.isdigit(S): return False else: return True def _on_click_placehold(self, event): self.buscaEdit.configure(state=NORMAL) self.buscaEdit.delete(0, END) janela.unbind('<Button-1>') #fazendo unbind com root da janela especificando exatamente qual # a funçao deve ser realizada o unbind nao teremos o erro de string def placehold(self): self.buscaEdit.insert(0, 'Digite sua Matricula') self.buscaEdit.configure(state=DISABLED) self.buscaEdit.bind('<Button-1>', self._on_click_placehold) def delet_campos(self): #deletar os campos dentros das Entry self.nomeEdit.delete(0, tk.END) self.idadeEdit.delete(0, tk.END) self.cpfEdit.delete(0, tk.END) self.matriculaEdit.delete(0, tk.END) self.emailEdit.delete(0, tk.END) self.enderecoEdit.delete(0, tk.END) self.buscaEdit.delete(0, tk.END) def _on_mostrar_clicked(self, event): #Seleção do usuario, linha na qual ele clicou selection = self.alunoList.selection() item = self.alunoList.item(selection) nome = item["values"][1] idade = item["values"][2] cpf = item["values"][3] matricula = item["values"][4] email = item["values"][5] endereco = item["values"][6] self.placehold() self.delet_campos() self.nomeEdit.insert(0, nome) self.idadeEdit.insert(0, idade) self.cpfEdit.insert(0, cpf) self.matriculaEdit.insert(0, matricula) self.emailEdit.insert(0, email) self.enderecoEdit.insert(0, endereco) def carregar_dados_iniciais_treeView(self): self.alunoList.delete(*self.alunoList.get_children()) self.delet_campos() registro = self.alunoCRUD.consultar() count = 0 for item in registro: id = item[0] nome = item[1] idade = item[2] cpf = item[3] matricula = item[4] email = item[5] endereco = item[6] self.alunoList.insert('','end',iid=count,values=(str(id),nome,idade,cpf,matricula,email,endereco)) count = count + 1 def buscar(self,event): if self.buscaEdit.get()=="" or self.buscaEdit.get()==str('Digite sua Matricula'): mb.showinfo("Erro","Digite sua Matricula no Campo Busca!") else: #deleta lista ao click self.alunoList.delete(*self.alunoList.get_children()) #obtem a entrada digitada pelo usuario no campo busca e coloca em uma lista lista = self.alunoCRUD.consultar_por_matricula(self.buscaEdit.get()) item = self.alunoList.selection() for item in lista: id = item[0] nome = item[1] idade = item[2] cpf = item[3] matricula = item[4] email = item[5] endereco = item[6] #deleta os campos prenchidos do formulario self.delet_campos() try: self.alunoList.insert('','end',values=(str(id),nome,idade,cpf,matricula,email,endereco)) self.placehold() except: mb.showinfo("Erro", "Aluno nao cadastrado no banco de dados") self.placehold() self.carregar_dados_iniciais_treeView() def _on_cadastrar_clicked(self): #Recuperar os dados dos campos texto nome = self.nomeEdit.get() idade = self.idadeEdit.get() cpf = self.cpfEdit.get() matricula = self.matriculaEdit.get() email = self.emailEdit.get() endereco = self.enderecoEdit.get() #Chamar o cadastrar do aluno.py para cadastrar no banco if self.cpfEdit.get()=="" or self.nomeEdit.get()=="": mb.showinfo("Campos em branco","Os campos com ( * ) não podem ficar vazio") else: if self.alunoCRUD.cadastrar(nome,idade,cpf,matricula,email,endereco): numeroLinha = len(self.alunoList.get_children()) id_aluno = self.alunoCRUD.consultar_ultimo_id() self.alunoList.insert('','end',numeroLinha,values=(str(id_aluno),nome,idade,cpf,matricula,email,endereco)) #Mostrar mensagem para usuário mb.showinfo("Mensagem", "Cadastro executado com sucesso!") #Limpar os campos texto self.delet_campos() else: mb.showinfo("Mensagem", "Erro no cadastro!") #Retornando o foco self.nomeEdit.focus_set() self.idadeEdit.focus_set() self.cpfEdit.focus_set() self.matriculaEdit.focus_set() self.emailEdit.focus_set() self.enderecoEdit.focus_set() def _on_atualizar_clicked(self): linha = self.alunoList.selection() if len(linha) != 0: id = self.alunoList.item(linha[0])["values"][0] nome = self.nomeEdit.get() idade = self.idadeEdit.get() cpf = self.cpfEdit.get() matricula = self.matriculaEdit.get() email = self.emailEdit.get() endereco = self.enderecoEdit.get() if self.alunoCRUD.atualizar(id,nome,idade,cpf,matricula,email,endereco): self.alunoList.item(self.alunoList.focus(), values=(str(id),nome,idade,cpf,matricula,email,endereco)) #remover a seleção self.carregar_dados_iniciais_treeView() #----------# mb.showinfo("Mensagem", "Alteração executada com sucesso.") self.delet_campos() else: mb.showinfo("Mensagem", "Erro na alteração.") self.nomeEdit.focus_set() def _on_deletar_clicked(self): linhaSelecionada = self.alunoList.selection() if len(linhaSelecionada) != 0: id = self.alunoList.item(linhaSelecionada[0])["values"][0] if self.alunoCRUD.excluir(id): self.alunoList.delete(linhaSelecionada) mb.showinfo("Mensagem", "Exclusão executada com sucesso.") self.delet_campos() else: mb.showinfo("Mensagem", "Erro na exclusão.") self.nomeEdit.focus_set() self.idadeEdit.focus_set() self.cpfEdit.focus_set() self.matriculaEdit.focus_set() self.emailEdit.focus_set() self.enderecoEdit.focus_set()