from tkinter import *
import sqlite3
import tkinter.ttk as ttk
import tkinter.messagebox as tkMessageBox
def Database():
global conn, cursor
conn = sqlite3.connect('tarefabasedados.db')
cursor = conn.cursor()
cursor.execute(
"CREATE TABLE IF NOT EXISTS `member` (mem_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "
"tarefa TEXT, obs TEXT, estado TEXT)")
def Create():
if NOMETAREFA.get() == "" or OBS.get() == "" or ESTADO.get() == "":
txt_result.config(text="Por favor, preencha todos os espaços!", fg="red")
else:
Database()
cursor.execute("INSERT INTO `member` (tarefa, obs, estado) VALUES(?, ?, ?)",
(str(NOMETAREFA.get()), str(OBS.get()), str(ESTADO.get())))
tree.delete(*tree.get_children())
cursor.execute("SELECT * FROM `member` ORDER BY `tarefa` ASC")
fetch = cursor.fetchall()
for data in fetch:
tree.insert('', 'end', values=(data[0], data[1], data[2], data[3]))
conn.commit()
NOMETAREFA.set("")
OBS.set("")
ESTADO.set("")
cursor.close()
conn.close()
txt_result.config(text="Criada a tarefa com sucesso!", fg="green")
def Read():
tree.delete(*tree.get_children())
Database()
cursor.execute("SELECT * FROM `member` ORDER BY `tarefa` ASC")
fetch = cursor.fetchall()
for data in fetch:
tree.insert('', 'end', values=(data[0], data[1], data[2], data[3]))
cursor.close()
conn.close()
txt_result.config(text="Todos os dados mostrados com sucesso", fg="blue")
def Update():
Database()
if ESTADO.get() == "":
txt_result.config(text="Por favor, escolha um Estado", fg="red")
else:
tree.delete(*tree.get_children())
cursor.execute("UPDATE `member` SET `tarefa` = ?, `obs` = ?, `estado` =? WHERE `mem_id` = ?", (str(NOMETAREFA.get()
), str(OBS.get()), str(ESTADO.get()),
int(mem_id)))
conn.commit()
cursor.execute("SELECT * FROM `member` ORDER BY `tarefa` ASC")
fetch = cursor.fetchall()
for data in fetch:
tree.insert('', 'end', values=(data[0], data[1], data[2], data[3]))
cursor.close()
conn.close()
NOMETAREFA.set("")
OBS.set("")
ESTADO.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="Tarefa alterada com sucesso", fg="green")
def OnSelected(event):
global mem_id;
curItem = tree.focus()
contents =(tree.item(curItem))
selecteditem = contents['values']
mem_id = selecteditem[0]
NOMETAREFA.set("")
OBS.set("")
ESTADO.set("")
NOMETAREFA.set(selecteditem[1])
OBS.set(selecteditem[2])
btn_create.config(state=DISABLED)
btn_read.config(state=DISABLED)
btn_update.config(state=NORMAL)
btn_delete.config(state=DISABLED)
def Delete():
if not tree.selection():
txt_result.config(text="Selecione primeiro uma tarefa", fg="red")
else:
result = tkMessageBox.askquestion('Tarefa',
'Deseja apagar a tarefa?', 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="Tarefa Apagada com Sucesso", fg="red")
root = Tk()
root.title("Tarefas em forma de Crud")
screen_width = root.winfo_screenwidth()
screen_height = root.winfo_screenheight()
width = 800
height = 400
root.geometry('%dx%d'%(width, height))
root.resizable(0, 0)
def Exit():
result = tkMessageBox.askquestion('Janela de Fechar', 'Deseja sair do programa?', icon="warning")
if result == 'yes':
root.destroy()
exit()
NOMETAREFA = StringVar()
OBS = StringVar()
ESTADO = 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)
iniciar = Radiobutton(RadioGroup, text="Iniciar", variable=ESTADO, value="A iniciar",
font=('arial', 16)).pack(side=TOP)
exuccao = Radiobutton(RadioGroup, text="Em Execução", variable=ESTADO, value="Em Execução",
font=('arial', 16)).pack(side=TOP)
feito = Radiobutton(RadioGroup, text="Concluído", variable=ESTADO, value="Concluído",
font=('arial', 16)).pack(side=BOTTOM)
txt_title = Label(Top, width=900, font=('arial', 24), text="Tarefas(CRUD)")
txt_title.pack()
txt_nometarefa = Label(Forms, text="Nome da Tarefa:", font=('arial', 16), bd=15)
txt_nometarefa.grid(row=0, sticky="e")
txt_obs = Label(Forms, text="Obs:", font=('arial', 16), bd=15)
txt_obs.grid(row=1, sticky="e")
txt_estado = Label(Forms, text="Estado:", font=('arial', 16), bd=15)
txt_estado.grid(row=2, sticky="e")
txt_result = Label(Buttons)
txt_result.pack(side=TOP)
firstname = Entry(Forms, textvariable=NOMETAREFA, width=30)
firstname.grid(row=0, column=1)
lastname = Entry(Forms, textvariable=OBS, width=30)
lastname.grid(row=1, column=1)
RadioGroup.grid(row=2, column=1)
btn_create = Button(Buttons, width=10, text="Criar", command=Create)
btn_create.pack(side=LEFT)
btn_read = Button(Buttons, width=10, text="Ler", command=Read)
btn_read.pack(side=LEFT)
btn_update = Button(Buttons, width=10, text="Update", command=Update, state=DISABLED)
btn_update.pack(side=LEFT)
#,
btn_delete = Button(Buttons, width=10, text="Eliminar",command=Delete)
btn_delete.pack(side=LEFT)
btn_exit = Button(Buttons, width=10, text="Sair", command=Exit)
btn_exit.pack(side=LEFT)
scrollbary = Scrollbar(Right, orient=VERTICAL)
scrollbarx = Scrollbar(Right, orient=HORIZONTAL)
tree = ttk.Treeview(Right, columns=("MemberID", "Tarefa", "Obs", "Estado"),
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('Tarefa', text="Nome da Tarefa", anchor=W)
tree.heading('Obs', text="Observação", anchor=W)
tree.heading('Estado', text="Estado", 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=150)
tree.column('#3', stretch=NO, minwidth=0, width=150)
tree.column('#4', stretch=NO, minwidth=0, width=180)
tree.pack()
tree.bind('<Double-Button-1>', OnSelected)
if __name__ == '__main__':
root.mainloop()