Mundo em Python

Sentimentos (usando tkinter)

from tkinter import *
import tkinter.ttk as ttk
from tkinter import messagebox
import sqlite3
from datetime import datetime
def Database():
global conn, cursor
conn = sqlite3.connect("sentimentos.db")
cursor = conn.cursor()
cursor.execute("""
CREATE TABLE IF NOT EXISTS registros (
id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
sentimento TEXT,
data TEXT,
hora TEXT
)
""")
conn.commit()
def register():
Database()
vsentimento = sentimento.get()
vdata = data.get()
vhora = hora.get()
if vsentimento == '' or vdata == '' or vhora == '':
messagebox.showinfo("Atenção", "Preencha todos os campos!")
else:
cursor.execute("INSERT INTO registros (sentimento, data, hora) VALUES (?, ?, ?)",
(vsentimento, vdata, vhora))
conn.commit()
messagebox.showinfo("Sucesso", "Registro adicionado com sucesso!")
DisplayData()
limpar()
def pesquisar_data():
vdata_pesquisa = pesquisa_data.get()
if vdata_pesquisa == '':
messagebox.showinfo("Atenção", "Por favor, insira uma data para pesquisar!")
return
Database()
tree.delete(*tree.get_children())
cursor.execute("SELECT * FROM registros WHERE data = ?", (vdata_pesquisa,))
fetch = cursor.fetchall()
for data in fetch:
tree.insert('', 'end', values=(data[0], data[1], data[2], data[3]))
conn.close()
def mostrar_todos():
DisplayData()
def limpar():
sentimento.set("")
now = datetime.now()
data.set(now.strftime("%Y-%m-%d"))
hora.set(now.strftime("%H:%M:%S"))
def DisplayData():
Database()
tree.delete(*tree.get_children())
cursor.execute("SELECT * FROM registros")
fetch = cursor.fetchall()
for data in fetch:
tree.insert('', 'end', values=(data[0], data[1], data[2], data[3]))
conn.close()
def apagar():
Database()
if not tree.selection():
messagebox.showwarning("Atenção", "Selecione um registro para apagar!")
else:
result = messagebox.askquestion('Confirmar', 'Deseja apagar o registro selecionado?', icon="warning")
if result == 'yes':
curItem = tree.focus()
contents = tree.item(curItem)
selecteditem = contents['values']
cursor.execute("DELETE FROM registros WHERE id = ?", (selecteditem[0],))
conn.commit()
tree.delete(curItem)
messagebox.showinfo("Sucesso", "Registro apagado com sucesso!")
conn.close()
def DisplayForm():
global tree, sentimento, data, hora, pesquisa_data
root = Tk()
root.geometry("1000x600")
root.title("Registar Sentimentos")
sentimento = StringVar()
pesquisa_data = StringVar()
now = datetime.now()
data = StringVar(value=now.strftime("%Y-%m-%d"))
hora = StringVar(value=now.strftime("%H:%M:%S"))
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)
MidViewForm = Frame(root, width=650)
MidViewForm.pack(side=RIGHT)
lbl_text = Label(TopViewForm, text="Registar Sentimentos", font=('verdana', 18), width=600, bg="cyan")
lbl_text.pack(fill=X)
Label(LFrom, text="Sentimento", font=("Arial", 12), bg="#15244C", fg="white").pack(side=TOP)
Entry(LFrom, font=("Arial", 10, "bold"), textvariable=sentimento).pack(side=TOP, padx=10, fill=X)
Label(LFrom, text="Data", font=("Arial", 12), bg="#15244C", fg="white").pack(side=TOP)
Entry(LFrom, font=("Arial", 10, "bold"), textvariable=data).pack(side=TOP, padx=10, fill=X)
Label(LFrom, text="Hora", font=("Arial", 12), bg="#15244C", fg="white").pack(side=TOP)
Entry(LFrom, font=("Arial", 10, "bold"), textvariable=hora).pack(side=TOP, padx=10, fill=X)
Button(LFrom, text="Submeter", font=("Arial", 10, "bold"), bg="cyan",
command=register).pack(side=TOP, padx=10, pady=5, fill=X)
Button(LFrom, text="Limpar", font=("Arial", 10, "bold"), bg="cyan",
command=limpar).pack(side=TOP, padx=10, pady=5, fill=X)
Button(LFrom, text="Apagar", font=("Arial", 10, "bold"), bg="cyan",
command=apagar).pack(side=TOP, padx=10, pady=5, fill=X)
Label(LFrom, text="Pesquisar por Data (YYYY-MM-DD)", font=("Arial", 12),
bg="#15244C", fg="white").pack(side=TOP, pady=10)
Entry(LFrom, font=("Arial", 10, "bold"),
textvariable=pesquisa_data).pack(side=TOP, padx=10, fill=X)
Button(LFrom, text="Pesquisar", font=("Arial", 10, "bold"), bg="cyan",
command=pesquisar_data).pack(side=TOP, padx=10, pady=5, fill=X)
Button(LFrom, text="Mostrar Todos", font=("Arial", 10, "bold"), bg="cyan",
command=mostrar_todos).pack(side=TOP, padx=10, pady=5, fill=X)
scrollbarx = Scrollbar(MidViewForm, orient=HORIZONTAL)
scrollbary = Scrollbar(MidViewForm, orient=VERTICAL)
tree = ttk.Treeview(MidViewForm, columns=("ID", "Sentimento", "Data", "Hora"),
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('ID', text="ID", anchor=W)
tree.heading('Sentimento', text="Sentimento", anchor=W)
tree.heading('Data', text="Data", anchor=W)
tree.heading('Hora', text="Hora", anchor=W)
tree.column('#0', stretch=NO, minwidth=0, width=0)
tree.column('#1', stretch=NO, minwidth=0, width=50)
tree.column('#2', stretch=NO, minwidth=0, width=150)
tree.column('#3', stretch=NO, minwidth=0, width=150)
tree.pack()
DisplayData()
root.mainloop()
DisplayForm()
0