Mundo em Python

Lista de funcionários (usando Crud)

from tkinter import*
import sqlite3
import tkinter.ttk as ttk
import tkinter.messagebox as tkMessageBox root = Tk()
root.title("Lista de Funcionários") def Database():
global conn, cursor
conn = sqlite3.connect('listafuncionario.db')
cursor = conn.cursor()
cursor.execute("CREATE TABLE IF NOT EXISTS `member` (mem_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, numerofuncionario TEXT, nome TEXT, estado TEXT, morada TEXT, email TEXT, telefone TEXT)") def Criar():
if NUMERODEFUNCIONARIO.get() == "" or NOME.get() == "" or ESTADO.get() == "" or MORADA.get() == "" or EMAIL.get() == "" or TELEFONE.get() == "":
txt_result.config(text="Por favor, preencha os espaços vazios!", fg="red")
else:
Database()
cursor.execute("INSERT INTO `member` (numerofuncionario, nome, estado, morada, email, telefone) VALUES(?, ?, ?, ?, ?, ?)",
(str(NUMERODEFUNCIONARIO.get()), str(NOME.get()), str(ESTADO.get()), str(MORADA.get()), str(EMAIL.get()), str(TELEFONE.get())))
tree.delete(*tree.get_children())
cursor.execute("SELECT * FROM `member` ORDER BY `nome` ASC")
fetch = cursor.fetchall()
for data in fetch:
tree.insert('', 'end', values=(data[0], data[1], data[2], data[3], data[4], data[5], data[6]))
conn.commit()
NUMERODEFUNCIONARIO.set("")
NOME.set("")
ESTADO.set("")
MORADA.set("")
EMAIL.set("")
TELEFONE.set("")
cursor.close()
conn.close()
txt_result.config(text="Criado o dado!", fg="green") def Update():
Database()
if ESTADO.get() == "":
txt_result.config(text="Por favor, escolhe o estado!", fg="red")
else:
tree.delete(*tree.get_children())
cursor.execute("INSERT INTO `member` (numerofuncionario, nome, estado, morada, email, telefone) VALUES(?, ?, ?, ?, ?, ?)",
(str(NUMERODEFUNCIONARIO.get()), str(NOME.get()), str(ESTADO.get()), str(MORADA.get()), str(EMAIL.get()), str(TELEFONE.get())))
conn.commit()
cursor.execute("SELECT * FROM `member` ORDER BY `nome` ASC")
fetch = cursor.fetchall()
for data in fetch:
tree.insert('', 'end', values=(data[0], data[1], data[2], data[3], data[4], data[5], data[6]))
cursor.close()
conn.close()
NUMERODEFUNCIONARIO.set("")
NOME.set("")
ESTADO.set("")
MORADA.set("")
EMAIL.set("")
TELEFONE.set("")
btn_create.config(state=NORMAL)
btn_read.config(state=NORMAL)
btn_update.config(state=DISABLED)
btn_delete.config(state=NORMAL)
txt_result.config(text="Successfully updated the data", fg="black")
def OnSelected(event):
global mem_id;
curItem = tree.focus()
contents =(tree.item(curItem))
selecteditem = contents['values']
mem_id = selecteditem[0]
NUMERODEFUNCIONARIO.set("")
NOME.set("")
ESTADO.set("")
MORADA.set("")
EMAIL.set("")
TELEFONE.set("")
NUMERODEFUNCIONARIO.set(selecteditem[1])
NOME.set(selecteditem[2])
MORADA.set(selecteditem[4])
EMAIL.set(selecteditem[5])
TELEFONE.set(selecteditem[6])
btn_create.config(state=DISABLED)
btn_read.config(state=DISABLED)
btn_update.config(state=NORMAL)
btn_delete.config(state=DISABLED) def Ler():
tree.delete(*tree.get_children())
Database()
cursor.execute("SELECT * FROM `member` ORDER BY `nome` ASC")
fetch = cursor.fetchall()
for data in fetch:
tree.insert('', 'end', values=(data[0], data[1], data[2], data[3], data[4], data[5], data[6]))
cursor.close()
conn.close()
txt_result.config(text="Mostrado os dados com Sucesso", fg="green")
def Apagar():
if not tree.selection():
txt_result.config(text="Por favor, seleciona um item", fg="red")
else:
result = tkMessageBox.askquestion('App',
'Deseja apagar o registro?', icon="warning")
if result == 'yes':
curItem = tree.focus()
contents = (tree.item(curItem))
selecteditem = contents['values']
tree.delete(curItem)
Database()
cursor.execute("DELETE FROM `member` WHERE `mem_id` = %d" % selecteditem[0])
conn.commit()
cursor.close()
conn.close()
txt_result.config(text="Apagado com sucesso!", fg="green")
def Exit():
result = tkMessageBox.askquestion('App', 'Deseja fechar o programa?', icon="warning")
if result == 'yes':
root.destroy()
exit()
Top = Frame(root, width=900, height=50, bd=8, relief="raise")
Top.pack(side=TOP)
Left = Frame(root, width=300, height=500, bd=8, relief="raise")
Left.pack(side=LEFT)
Right = Frame(root, width=600, height=500, bd=8, relief="raise")
Right.pack(side=RIGHT)
Forms = Frame(Left, width=300, height=450)
Forms.pack(side=TOP)
Buttons = Frame(Left, width=300, height=100, bd=8, relief="raise")
Buttons.pack(side=BOTTOM)
RadioGroup = Frame(Forms)
ESTADO = StringVar()
activo = Radiobutton(RadioGroup, text="Activo", variable=ESTADO, value="Activo", font=('arial', 16)).pack(side=LEFT)
naoactivo = Radiobutton(RadioGroup, text="Não Activo", variable=ESTADO, value="Não Activo", font=('arial', 16)).pack(side=LEFT)
NUMERODEFUNCIONARIO = StringVar()
NOME = StringVar()
MORADA = StringVar()
EMAIL = StringVar()
TELEFONE = StringVar() txt_titulo = Label(Top, width=900, font=('arial', 24), text = "Lista de Funcionários")
txt_titulo.pack()
txt_NUMERODEFUNCIONARIO = Label(Forms, text="Número de Funcionário:", font=('arial', 16), bd=15)
txt_NUMERODEFUNCIONARIO.grid(row=0, sticky="e")
txt_Nome = Label(Forms, text="Nome Completo:", font=('arial', 16), bd=15)
txt_Nome.grid(row=1, sticky="e")
txt_estado = Label(Forms, text="Estado:", font=('arial', 16), bd=15)
txt_estado.grid(row=2, sticky="e")
txt_morada = Label(Forms, text="Morada:", font=('arial', 16), bd=15)
txt_morada.grid(row=3, sticky="e")
txt_email = Label(Forms, text="Email:", font=('arial', 16), bd=15)
txt_email.grid(row=4, sticky="e")
txt_telefone= Label(Forms, text="Telefone:", font=('arial', 16), bd=15)
txt_telefone.grid(row=5, sticky="e") txt_vazio= Label(Forms, text="", font=('arial', 16), bd=15)
txt_vazio.grid(row=6, sticky="e")
txt_result = Label(Buttons)
txt_result.pack(side=TOP) #==================================ENTRY WIDGET=======================================
numerofuncionario = Entry(Forms, textvariable=NUMERODEFUNCIONARIO, width=30)
numerofuncionario.grid(row=0, column=1)
nome = Entry(Forms, textvariable=NOME, width=30)
nome.grid(row=1, column=1)
RadioGroup.grid(row=2, column=1)
morada = Entry(Forms, textvariable=MORADA, width=30)
morada.grid(row=3, column=1)
email = Entry(Forms, textvariable=EMAIL, width=30)
email.grid(row=4, column=1)
telefone = Entry(Forms, textvariable=TELEFONE, width=30)
telefone.grid(row=5, column=1)
btn_create = Button(Buttons, width=10, text="Create", command=Criar)
btn_create.pack(side=LEFT)
btn_read = Button(Buttons, width=10, text="Ler Tudo", command=Ler )
btn_read.pack(side=LEFT)
btn_update = Button(Buttons, width=10, text="Actualizar", command=Update,state=DISABLED)
btn_update.pack(side=LEFT)
btn_delete = Button(Buttons, width=10, text="Apagar", command=Apagar)
btn_delete.pack(side=LEFT)
btn_exit = Button(Buttons, width=10, text="Exit", command=Exit)
btn_exit.pack(side=LEFT)
scrollbary = Scrollbar(Right, orient=VERTICAL)
scrollbarx = Scrollbar(Right, orient=HORIZONTAL)
tree = ttk.Treeview(Right, columns=("MemberID", "Numerofuncionario", "Nome", "Estado", "Morada", "Email", "Telefone"), selectmode="extended", height=500, yscrollcommand=scrollbary.set, xscrollcommand=scrollbarx.set)
scrollbary.config(command=tree.yview)
scrollbary.pack(side=RIGHT, fill=Y)
scrollbarx.config(command=tree.xview)
scrollbarx.pack(side=BOTTOM, fill=X)
tree.heading('MemberID', text="MemberID", anchor=W)
tree.heading('Numerofuncionario', text="Número de Funcionário", anchor=W)
tree.heading('Nome', text="Nome", anchor=W)
tree.heading('Estado', text="Estado", anchor=W)
tree.heading('Morada', text="Morada", anchor=W)
tree.heading('Email', text="Email", anchor=W)
tree.heading('Telefone', text="Telefone", anchor=W)
tree.column('#0', stretch=NO, minwidth=0, width=0)
tree.column('#1', stretch=NO, minwidth=0, width=0)
tree.column('#2', stretch=NO, minwidth=0, width=120)
tree.column('#3', stretch=NO, minwidth=0, width=120)
tree.column('#4', stretch=NO, minwidth=0, width=80)
tree.column('#5', stretch=NO, minwidth=0, width=150)
tree.column('#6', stretch=NO, minwidth=0, width=120)
tree.column('#7', stretch=NO, minwidth=0, width=120)
tree.pack()
tree.bind('<Double-Button-1>', OnSelected) if __name__ == '__main__':
root.mainloop()
0