Lista de Contactos (Amostra)

from tkinter import *
import sqlite3
import tkinter.ttk as ttk
import tkinter.messagebox as tkMessageBox


root = Tk()
root.title("Lista de Contactos Telefónicos")
root.resizable(False,False)
# Funções
def Database():
global conn, cursor
conn = sqlite3.connect('listacontactos.db')
cursor = conn.cursor()
cursor.execute("CREATE TABLE IF NOT EXISTS `member` "
"(mem_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "
"nomecontacto TEXT, lugar TEXT, "
"num_telefone TEXT, num_telemovel TEXT, escrever_email TEXT)")
conn.commit()
df = Database()
def OnSelected(event):
global mem_id;
curItem = tree.focus()
contents = (tree.item(curItem))
selecteditem = contents['values']
mem_id = selecteditem[0]
NOMECONTACTO.set("")
MORADA.set("")
TELEFONE.set("")
TELEMOVEL.set("")
EMAIL.set("")
NOMECONTACTO.set(selecteditem[1])
MORADA.set(selecteditem[2])
TELEFONE.set(selecteditem[3])
TELEMOVEL.set(selecteditem[4])
EMAIL.set(selecteditem[5])
btn_create.config(state=DISABLED)
btn_delete.config(state=DISABLED)
def Create():
if NOMECONTACTO.get() == "" or MORADA.get() == "" or TELEFONE.get() == ""\
or TELEMOVEL.get() == "" or EMAIL.get() == "":
txt_result.config(text="Por favor, preencha o campo obrigatório!", fg="red")
else:
Database()
cursor.execute(
"INSERT INTO `member` (nomecontacto, lugar, num_telefone, num_telemovel, escrever_email) VALUES(?, ?, ?, ?, ?)",
(str(NOMECONTACTO.get()), str(MORADA.get()),
str(TELEFONE.get()), str(TELEMOVEL.get()),str(EMAIL.get())))
tree.delete(*tree.get_children())
cursor.execute("SELECT * FROM `member` ORDER BY `NOMECONTACTO` ASC")
fetch = cursor.fetchall()
for data in fetch:
tree.insert('', 'end', values=(data[0], data[1], data[2], data[3], data[4], data[5]))
conn.commit()
NOMECONTACTO.set("")
MORADA.set("")
TELEFONE.set("")
TELEMOVEL.set("")
EMAIL.set("")
cursor.close()
conn.close()
txt_result.config(text="Contacto Adicionado!", fg="green")
# Limpar
def clear_text():
nomecontacto.delete(0, END)
lugar.delete(0, END)
num_telefone.delete(0, END)
num_telemovel.delete(0, END)
escrever_email.delete(0, END)

# Saída
def Exit():
result = tkMessageBox.askquestion( 'Contactos','Você tem certeza que quer sair?', icon="warning")
if result == 'yes':
root.destroy()
exit()
Top = Frame(root, width=500, height=30, 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)
# Variáveis
NOMECONTACTO = StringVar()
MORADA = StringVar()
TELEMOVEL = StringVar()
TELEFONE = StringVar()
EMAIL = StringVar()
#Configuração da janela
screen_width = root.winfo_screenwidth()
screen_height = root.winfo_screenheight()
width = 900
height = 500
x = (screen_width / 2) - (width / 2)
y = (screen_height / 2) - (height / 2)
a = '%dx%d+%d+%d'
root.geometry(a % (width, height, x, y))
root.resizable(0, 0)
# Entradas
txt_titulo = Label(Top, width=900,font=('arial', 24), text="Lista de Contacto")
txt_titulo.pack()
txt_nomecotacto = Label(Forms, text="Nome do Contacto:", font=('arial', 16), bd=15)
txt_nomecotacto.grid(row=0, sticky="e")
txt_morada = Label(Forms, text="Moradas: ",
font=('arial', 16), bd=15)
txt_morada.grid(row=1, sticky="e")
txt_telefone = Label(Forms, text="Telefone:", font=('arial', 16), bd=15)
txt_telefone.grid(row=3, sticky="e")
txt_telemovel = Label(Forms, text="Telemóvel:", font=('arial', 16), bd=15)
txt_telemovel.grid(row=4, sticky="e")
txt_email = Label(Forms, text="Email:", font=('arial', 16), bd=15)
txt_email.grid(row=5, sticky="e")
txt_result = Label(Buttons)
txt_result.pack(side=TOP)
#Escrever
nomecontacto = Entry(Forms, textvariable=NOMECONTACTO, width=30)
nomecontacto.grid(row=0, column=1)
lugar = Entry(Forms, textvariable=MORADA, width=30)
lugar.grid(row=1, column=1)
num_telefone = Entry(Forms, textvariable=TELEFONE, width=30)
num_telefone.grid(row=3, column=1)
num_telemovel = Entry(Forms, textvariable=TELEMOVEL, width=30)
num_telemovel.grid(row=4, column=1)
escrever_email = Entry(Forms, textvariable=EMAIL, width=30)
escrever_email.grid(row=5, column=1)

# Butões
# command=Create, ,command=Read ,command=Delete command=clear_text

#command=Update state=DISABLED
btn_create = Button(Buttons, width=10, text="Create",command=Create)
btn_create.pack(side=LEFT)
btn_delete = Button(Buttons, width=10, text="Delete")
btn_delete.pack(side=LEFT)
btn_limpar = Button(Buttons, width=10, text="Clear",command=clear_text)
btn_limpar.pack(side=LEFT)
btn_exit = Button(Buttons, width=10, text="Exit",command=Exit)
btn_exit.pack(side=LEFT)


# Tabela
scrollbary = Scrollbar(Right, orient=VERTICAL)
scrollbarx = Scrollbar(Right, orient=HORIZONTAL)
tree = ttk.Treeview(Right, columns=("MemberID", "NomeContacto"),
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('NomeContacto', text="Nome do Contacto", anchor=W)
tree.column('#0', stretch=NO, minwidth=0, width=0)
tree.column('#1', stretch=NO, minwidth=0, width=120)
tree.pack()
tree.bind('<Double-Button-1>', OnSelected)
if __name__ == '__main__':
root.mainloop()

Comentários

Mensagens populares deste blogue

Criar Cartões de Visita

12 signos egípcios

Calcular a percentagem de ocupação