from tkinter import *
import tkinter.ttk as ttk
import tkinter.messagebox as tkMessageBox
import sqlite3
def Database():
global conn, cursor
conn = sqlite3.connect("urgencias.db")
cursor = conn.cursor()
cursor.execute(
"CREATE TABLE IF NOT EXISTS REGISTRATION (RID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, NOMEPACICENTE TEXT,NUMEROPULSEIRA TEXT, "
"DATANASCIMENTO TEXT, SEXO TEXT, CORPULSEIRA TEXT, MORADA TEXT,CONTACTO TEXT )")
def DisplayForm():
root = Tk()
root.geometry("1000x500")
root.title("Registar Pacientes ")
global tree
global SEARCH
global nome_paciente,n_paciente,datanascimento,sexo,cor_pulseira,morada,contacto
SEARCH = StringVar()
nome_paciente = StringVar()
n_paciente = StringVar()
datanascimento = StringVar()
sexo = StringVar()
cor_pulseira = StringVar()
morada = StringVar()
contacto = StringVar()
TopViewForm = Frame(root, width=600, bd=1, relief=SOLID)
TopViewForm.pack(side=TOP, fill=X)
LFrom = Frame(root, width="350",bg="#15244C")
LFrom.pack(side=LEFT, fill=Y)
LeftViewForm = Frame(root, width=500,bg="#0B4670")
LeftViewForm.pack(side=LEFT, fill=Y)
MidViewForm = Frame(root, width=600)
MidViewForm.pack(side=RIGHT)
lbl_text = Label(TopViewForm, text="Sistema de Gestão de Urgência", font=('verdana', 18), width=600,bg="cyan")
lbl_text.pack(fill=X)
Label(LFrom, text="Nome do Paciente ", font=("Arial", 12),bg="#15244C",fg="white").pack(side=TOP)
Entry(LFrom,font=("Arial",10,"bold"),textvariable=nome_paciente).pack(side=TOP, padx=10, fill=X)
Label(LFrom, text="Número de Paciente", font=("Arial", 12), bg="#15244C", fg="white").pack(side=TOP)
Entry(LFrom, font=("Arial", 10, "bold"), textvariable=n_paciente).pack(side=TOP, padx=10, fill=X)
Label(LFrom, text="Data de Nacismento ", font=("Arial", 12),bg="#15244C",fg="white").pack(side=TOP)
Entry(LFrom, font=("Arial", 10, "bold"),textvariable=datanascimento).pack(side=TOP, padx=10, fill=X)
Label(LFrom, text="Sexo ", font=("Arial", 12),bg="#15244C",fg="white").pack(side=TOP)
sexo.set("Selecionar Sexo")
content={'Masculino','Feminino'}
OptionMenu(LFrom,sexo,*content).pack(side=TOP, padx=10, fill=X)
Label(LFrom, text="Cor da Pulseira ", font=("Arial", 12), bg="#15244C", fg="white").pack(side=TOP)
cor_pulseira.set("Selecionar Cor da Pulseira")
content1 = {'Vermelho', 'Laranja','Amarelo','Verde','Azul'}
OptionMenu(LFrom, cor_pulseira, *content1).pack(side=TOP, padx=10, fill=X)
Label(LFrom, text="Morada ", font=("Arial", 12),bg="#15244C",fg="white").pack(side=TOP)
Entry(LFrom, font=("Arial", 10, "bold"),textvariable=morada).pack(side=TOP, padx=10, fill=X)
Label(LFrom, text="Contacto ", font=("Arial", 12),bg="#15244C",fg="white").pack(side=TOP)
Entry(LFrom, font=("Arial", 10, "bold"),textvariable=contacto).pack(side=TOP, padx=10, fill=X)
Button(LFrom,text="Submeter",font=("Arial", 10, "bold"),bg="#15244C",fg="white",command=register).pack(side=TOP, padx=10,pady=5, fill=X)
lbl_txtsearch = Label(LeftViewForm, text="Digite o Número de Pacientes", font=('verdana', 10),bg="#0B4670")
lbl_txtsearch.pack()
search = Entry(LeftViewForm, textvariable=SEARCH, font=('verdana', 15), width=10)
search.pack(side=TOP, padx=10, fill=X)
btn_search = Button(LeftViewForm, text="Pesquisa",bg="cyan", command=SearchRecord)
btn_search.pack(side=TOP, padx=10, pady=10, fill=X)
btn_view = Button(LeftViewForm, text="Ver tudo",bg="cyan",command=DisplayData)
btn_view.pack(side=TOP, padx=10, pady=10, fill=X)
btn_Limpar = Button(LeftViewForm, text="Limpar",bg="cyan",command=limpar)
btn_Limpar.pack(side=TOP, padx=10, pady=10, fill=X)
btn_apagar = Button(LeftViewForm, text="Apagar",bg="cyan",command=apagar)
btn_apagar.pack(side=TOP, padx=10, pady=10, fill=X)
btn_actualizar = Button(LeftViewForm, text="Actualizar",bg="cyan",command=actualizacao)
btn_actualizar.pack(side=TOP, padx=10, pady=10, fill=X)
scrollbarx = Scrollbar(MidViewForm, orient=HORIZONTAL)
scrollbary = Scrollbar(MidViewForm, orient=VERTICAL)
tree = ttk.Treeview(MidViewForm,columns=("Student Id", "NomePaciente","NúmeroPaciente", "Datanascimento", "Sexo","CorPulseira","Morada",'Contacto'),
selectmode="extended", height=100, 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('Student Id', text="Id", anchor=W)
tree.heading('NomePaciente', text="Nome Paciente", anchor=W)
tree.heading('NúmeroPaciente', text="Número Paciente", anchor=W)
tree.heading('Datanascimento', text="Data nascimento", anchor=W)
tree.heading('Sexo', text="Sexo", anchor=W)
tree.heading('CorPulseira', text="Cor de Pulseira", anchor=W)
tree.heading('Morada', text="Morada", anchor=W)
tree.heading('Contacto', text="Contacto", anchor=W)
tree.column('#0', stretch=NO, minwidth=0, width=0)
tree.column('#1', stretch=NO, minwidth=0, width=100)
tree.column('#2', stretch=NO, minwidth=0, width=150)
tree.column('#3', stretch=NO, minwidth=0, width=120)
tree.column('#4', stretch=NO, minwidth=0, width=120)
tree.column('#5', stretch=NO, minwidth=0, width=120)
tree.column('#6', stretch=NO, minwidth=0, width=120)
tree.column('#7', stretch=NO, minwidth=0, width=120)
tree.pack()
def register():
Database()
vnome=nome_paciente.get()
Vnpaciente = n_paciente.get()
vdatanascimento=datanascimento.get()
vsexo=sexo.get()
vpulseira=cor_pulseira.get()
vmorada=morada.get()
vcontacto=contacto.get()
if vnome==''or Vnpaciente ==''or vdatanascimento==''or vsexo=='' or vpulseira==''or vmorada==''or vcontacto=='':
tkMessageBox.showinfo("Atenção","Preencha os espaços vazios!!!")
else:
conn.execute('INSERT INTO REGISTRATION (NOMEPACICENTE,NUMEROPULSEIRA,DATANASCIMENTO,SEXO,CORPULSEIRA,MORADA,CONTACTO) \
VALUES (?,?,?,?,?,?,?)',(vnome,Vnpaciente,vdatanascimento,vsexo,vpulseira,vmorada,vcontacto));
conn.commit()
tkMessageBox.showinfo("Sucesso","Alunos adicionado com Sucesso")
DisplayData()
conn.close()
def DisplayData():
Database()
tree.delete(*tree.get_children())
cursor=conn.execute("SELECT * FROM REGISTRATION")
fetch = cursor.fetchall()
for data in fetch:
tree.insert('', 'end', values=(data))
tree.bind("<Double-1>",OnDoubleClick)
cursor.close()
conn.close()
def actualizacao():
Database()
vnome = nome_paciente.get()
Vnpaciente = n_paciente.get()
vdatanascimento = datanascimento.get()
vsexo = sexo.get()
vpulseira = cor_pulseira.get()
vmorada = morada.get()
vcontacto = contacto.get()
if vnome==''or Vnpaciente ==''or vdatanascimento==''or vsexo=='' or vpulseira==''or vmorada==''or vcontacto=='':
tkMessageBox
tkMessageBox.showinfo("Atenção","Preencha todos os espaços!!!")
else:
curItem = tree.focus()
contents = (tree.item(curItem))
selecteditem = contents['values']
conn.execute('UPDATE REGISTRATION SET NOMEPACICENTE=?,NUMEROPULSEIRA=?,DATANASCIMENTO=?,SEXO=?,CORPULSEIRA=?,MORADA=?,CONTACTO=? WHERE RID = ?',
(vnome,Vnpaciente,vdatanascimento,vsexo,vpulseira,vmorada,vcontacto,selecteditem[0]))
conn.commit()
tkMessageBox.showinfo("Mensagem","Actualização com Sucesso")
limpar()
DisplayData()
conn.close()
def apagar():
Database()
if not tree.selection():
tkMessageBox.showwarning("Atenção","Selecione o paciente a eliminar ")
else:
result = tkMessageBox.askquestion('Confirmar', 'Deseja apagar o paciente?',
icon="warning")
if result == 'yes':
curItem = tree.focus()
contents = (tree.item(curItem))
selecteditem = contents['values']
tree.delete(curItem)
cursor=conn.execute("DELETE FROM REGISTRATION WHERE RID = %d" % selecteditem[0])
conn.commit()
cursor.close()
conn.close()
conn.close()
def SearchRecord():
Database()
if SEARCH.get() != "":
tree.delete(*tree.get_children())
cursor=conn.execute("SELECT * FROM REGISTRATION WHERE NUMEROPULSEIRA LIKE ?", ('%' + str(SEARCH.get()) + '%',))
fetch = cursor.fetchall()
for data in fetch:
tree.insert('', 'end', values=(data))
cursor.close()
conn.close()
def limpar():
tree.delete(*tree.get_children())
DisplayData()
SEARCH.set("")
nome_paciente.set("")
n_paciente.set("")
datanascimento.set("")
sexo.set("")
cor_pulseira.set("")
morada.set("")
contacto.set("")
def OnDoubleClick(self):
curItem = tree.focus()
contents = (tree.item(curItem))
selecteditem = contents['values']
nome_paciente.set(selecteditem[1])
n_paciente.set(selecteditem[2])
datanascimento.set(selecteditem[3])
sexo.set(selecteditem[4])
cor_pulseira.set(selecteditem[5])
morada.set(selecteditem[6])
contacto.set(selecteditem[7])
DisplayForm()
if __name__=='__main__':
mainloop()