
from tkinter import*
import sqlite3
import tkinter.ttk as ttk
import tkinter.messagebox as tkMessageBox
root = Tk()
root.title("Ficha de Doente")
root.geometry('1200x700')
root.resizable(0, 0)
root.configure(bg="#92aec7")
def Database():
global conn, cursor
conn = sqlite3.connect('fichacoente.db')
cursor = conn.cursor()
cursor.execute("CREATE TABLE IF NOT EXISTS `member` (mem_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, primeironome TEXT, "
"apelido TEXT, sexo TEXT,"
" cc TEXT, morada TEXT, cpostal TEXT,datanascimento TEXT,doencas TEXT,prescricao TEXT )")
def SearchRecord():
#checking search text is empty or not
if SEARCH.get() != "":
#clearing current display data
tree.delete(*tree.get_children())
#open database
Database()
#select query with where clause
cursor=conn.execute("SELECT * FROM `member` WHERE cc LIKE ?", ('%' + str(SEARCH.get()) + '%',))
#fetch all matching records
fetch = cursor.fetchall()
#loop for displaying all records into GUI
for data in fetch:
tree.insert('', 'end', values=(data))
cursor.close()
conn.close()
def Criar():
if PRIMEIRONOME.get() == "" or APELIDO.get() == "" or CC.get() == "" or SEXO.get() == "" or MORADA.get() == "" or\
CPOSTAL.get() == "" or DATANASCIMENTO.get() == "" or DOENCAS.get() == "" or PRESCRICAO.get() =="" :
txt_result.config(text="Por favor, preenche todos os campos do formulário!", fg="red")
else:
Database()
cursor.execute("INSERT INTO `member` (primeironome, apelido, cc, sexo, morada, cpostal,datanascimento,doencas,prescricao) "
"VALUES(?, ?, ?, ?, ?, ?,?,?,?)", (str(PRIMEIRONOME.get()), str(APELIDO.get()), str(CC.get()), str(SEXO.get()),
str(MORADA.get()), str(CPOSTAL.get()),str(DATANASCIMENTO.get()),
str(DOENCAS.get()),str(PRESCRICAO.get())))
#
tree.delete(*tree.get_children())
cursor.execute("SELECT * FROM `member` ORDER BY `cc` 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],data[7],data[8],data[9]))
conn.commit()
PRIMEIRONOME.set("")
APELIDO.set("")
CC.set("")
SEXO.set("")
MORADA.set("")
CPOSTAL.set("")
DATANASCIMENTO.set("")
DOENCAS.set("")
PRESCRICAO.set("")
cursor.close()
conn.close()
txt_result.config(text="Criado doente com sucesso!", fg="green")
def Leitura():
tree.delete(*tree.get_children())
Database()
cursor.execute("SELECT * FROM `member` ORDER BY `cc` 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],data[7],data[8],data[9]))
cursor.close()
conn.close()
txt_result.config(text="Todos os dados à vista", fg="blue")
def Update():
Database()
if SEXO.get() == "":
txt_result.config(text="Por favor, escolhe um Sexo!", fg="red")
else:
tree.delete(*tree.get_children())
cursor.execute("UPDATE `member` SET `primeironome` = ?, `apelido` = ?, `sexo` =?, `cc` = ?, `morada` = ?, `cpostal` = ? "
", `datanascimento` = ?,`doencas` = ?,`prescricao` = ? WHERE `mem_id` = ?", (str(PRIMEIRONOME.get()), str(APELIDO.get()),
str(SEXO.get()), str(CC.get()),
str(MORADA.get()), str(CPOSTAL.get()),
str(DATANASCIMENTO.get()),
str(DOENCAS.get()),str(PRESCRICAO.get()),int(mem_id)))
conn.commit()
cursor.execute("SELECT * FROM `member` ORDER BY `cc` 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],data[7],data[8],data[9]))
cursor.close()
conn.close()
PRIMEIRONOME.set("")
APELIDO.set("")
CC.set("")
SEXO.set("")
MORADA.set("")
CPOSTAL.set("")
DATANASCIMENTO.set("")
DOENCAS.set("")
PRESCRICAO.set("")
btn_criar.config(state=NORMAL)
btn_ler.config(state=NORMAL)
btn_actualizacao.config(state=DISABLED)
btn_eliminar.config(state=NORMAL)
txt_result.config(text="Actualizar os dados com Sucesso", fg="black")
def OnSelected(event):
global mem_id;
curItem = tree.focus()
contents =(tree.item(curItem))
selecteditem = contents['values']
mem_id = selecteditem[0]
PRIMEIRONOME.set("")
APELIDO.set("")
CC.set("")
SEXO.set("")
MORADA.set("")
CPOSTAL.set("")
DATANASCIMENTO.set("")
DOENCAS.set("")
PRESCRICAO.set("")
PRIMEIRONOME.set(selecteditem[1])
APELIDO.set(selecteditem[2])
CC.set(selecteditem[4])
MORADA.set(selecteditem[5])
CPOSTAL.set(selecteditem[6])
DATANASCIMENTO.set(selecteditem[7])
DOENCAS.set(selecteditem[8])
PRESCRICAO.set(selecteditem[9])
btn_criar.config(state=DISABLED)
btn_ler.config(state=DISABLED)
btn_actualizacao.config(state=NORMAL)
btn_eliminar.config(state=DISABLED)
def Delete():
if not tree.selection():
txt_result.config(text="Por favor,selecione um doente", fg="red")
else:
result = tkMessageBox.askquestion('Apagar Doente', 'Deseja elimitar doentes?', 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="blue")
def Exit():
result = tkMessageBox.askquestion('Sair da Aplicação', 'Deseja sair da aplicação?', icon="warning")
if result == 'yes':
root.destroy()
exit()
PRIMEIRONOME = StringVar()
APELIDO = StringVar()
CC = StringVar()
SEXO = StringVar()
MORADA= StringVar()
CPOSTAL= StringVar()
DATANASCIMENTO = StringVar()
DOENCAS = StringVar()
PRESCRICAO = StringVar()
SEARCH = StringVar()
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)
Masculino = Radiobutton(RadioGroup, text="Masculino", variable=SEXO, value="Masculino", font=('arial', 16)).pack(side=LEFT)
Feminino = Radiobutton(RadioGroup, text="Feminino", variable=SEXO, value="Feminino", font=('arial', 16)).pack(side=LEFT)
txt_titulo = Label(Top, width=900, font=('arial', 24), text = "Ficha de Doente")
txt_titulo.pack()
txt_primeironome = Label(Forms, text="Primeiro Nome: ", font=('arial', 16), bd=15)
txt_primeironome.grid(row=0, sticky="e")
txt_apelido = Label(Forms, text="Apelido(s): ", font=('arial', 16), bd=15)
txt_apelido.grid(row=1, sticky="e")
txt_cc = Label(Forms, text="Cartão de Cidadão: ", font=('arial', 16), bd=15)
txt_cc.grid(row=2, sticky="e")
txt_sexo = Label(Forms, text="Sexo:", font=('arial', 16), bd=15)
txt_sexo.grid(row=3, sticky="e")
txt_morada = Label(Forms, text="Morada:", font=('arial', 16), bd=15)
txt_morada.grid(row=4, sticky="e")
txt_cposta = Label(Forms, text="Código Postal:", font=('arial', 16), bd=15)
txt_cposta.grid(row=5, sticky="e")
txt_datanascimento = Label(Forms, text="Data de Nascimento:", font=('arial', 16), bd=15)
txt_datanascimento.grid(row=6, sticky="e")
txt_doencas = Label(Forms, text="Doenças:", font=('arial', 16), bd=15)
txt_doencas.grid(row=7, sticky="e")
txt_prescricao = Label(Forms, text="Prescrição Médica:", font=('arial', 16), bd=15)
txt_prescricao.grid(row=8, sticky="e")
txt_result = Label(Buttons)
txt_result.pack(side=TOP)
# Entradas
primeironome = Entry(Forms, textvariable=PRIMEIRONOME, width=30)
primeironome.grid(row=0, column=1)
apelido = Entry(Forms, textvariable=APELIDO, width=30)
apelido.grid(row=1, column=1)
cc = Entry(Forms, textvariable=CC, width=30)
cc.grid(row=2, column=1)
RadioGroup.grid(row=3, column=1)
morada = Entry(Forms, textvariable=MORADA, width=30)
morada.grid(row=4, column=1)
cpostal = Entry(Forms, textvariable=CPOSTAL, width=30)
cpostal.grid(row=5, column=1)
datanascimento = Entry(Forms, textvariable=DATANASCIMENTO, width=30)
datanascimento.grid(row=6, column=1)
doencas = Entry(Forms, textvariable=DOENCAS, width=30)
doencas.grid(row=7, column=1)
prescricao = Entry(Forms, textvariable=PRESCRICAO, width=30)
prescricao.grid(row=8, column=1)
btn_criar = Button(Buttons, width=10, text="Criar",command=Criar)
btn_criar.pack(side=LEFT)
btn_ler = Button(Buttons, width=10, text="Ler", command=Leitura)
btn_ler.pack(side=LEFT)
btn_actualizacao = Button(Buttons, width=10, text="Actualizar",command= Update, state=DISABLED)
btn_actualizacao.pack(side=LEFT)
btn_eliminar = Button(Buttons, width=10, text="Apagar",command=Delete)
btn_eliminar.pack(side=LEFT)
search = Entry(Buttons, textvariable=SEARCH, font=('verdana', 12), width=10)
search.pack(side=TOP, padx=10, fill=X)
search.insert(0, "Digite o CC")
btn_search = Button(Buttons, text="Search", command=SearchRecord)
btn_search.pack(side=TOP, padx=10, pady=10, fill=X)
btn_exit = Button(Buttons, width=10, text="Exit", command=Exit)
btn_exit.pack(side=LEFT)
# Construção da Tabela
scrollbary = Scrollbar(Right, orient=VERTICAL)
scrollbarx = Scrollbar(Right, orient=HORIZONTAL)
tree = ttk.Treeview(Right, columns=("MemberID", "Primeironome", "Apelido", "Sexo", "Cc", "Morada", "Cpostal","Datanascimento","Doencas",
'Prescricao'), 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('Primeironome', text="Primeiro Nome", anchor=W)
tree.heading('Apelido', text="Apelido(s)", anchor=W)
tree.heading('Sexo', text="Sexo", anchor=W)
tree.heading('Cc', text="Cartão de Cidadão", anchor=W)
tree.heading('Morada', text="Morada", anchor=W)
tree.heading('Cpostal', text="Código Postal", anchor=W)
tree.heading('Datanascimento', text="Data de Nascimento", anchor=W)
tree.heading('Doencas', text="Doenças", anchor=W)
tree.heading('Prescricao', text="Prescrição Médica", 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=100)
tree.column('#3', stretch=NO, minwidth=0, width=100)
tree.column('#4', stretch=NO, minwidth=0, width=120)
tree.column('#5', stretch=NO, minwidth=0, width=80)
tree.column('#6', stretch=NO, minwidth=0, width=120)
tree.column('#7', stretch=NO, minwidth=0, width=120)
tree.column('#8', stretch=NO, minwidth=0, width=120)
tree.pack()
tree.bind('<Double-Button-1>', OnSelected)
root.mainloop()
Comentários
Enviar um comentário