Phonebook GUI Application Made With Python and Tkinter (Part IV).
1 comment
I am a newbie on the programming world and I am trying to learn Python as it is the easiest and very strong programming language. I've learnt all basic theories and the programming syntax and then I have solved some problems from urionlinejudge. Now I'am trying to learn GUI Appliations and I am trying to learn Tkinter module of Python.
Previously I posted a Restaurant Management System GUI application that I made with Python and Tkinter module of python. Here is Phonebook GUI Application Made With Python and Tkinter. I will post the code into different parts. This is the third part.
First Part
Second Part
Third Part
Let us jump to the codes of "update_people.py".
Importing
import tkinter as tk
import _sqlite3
from tkinter import PhotoImage
import datetime
from tkinter import messagebox
date = datetime.datetime.now().date()
date = str(date)
con = _sqlite3.connect('database.db')
cur = con.cursor()
Class "Update_people"
class Update_people(tk.Toplevel):
def __init__(self, person_id):
tk.Toplevel.__init__(self)
self.geometry('650x550+380+80')
self.title('My People')
self.resizable(0,0)
self.top = tk.Frame(self, height=150, bg='white')
self.top.pack(fill=tk.X)
self.bottom=tk.Frame(self, height=500, bg='#ebb134')
self.bottom.pack(fill=tk.X)
# ---------- icon ------------
self.top_image = PhotoImage(file='icons/people.png')
self.top_image_label = tk.Label(self.top, image=self.top_image, bg='white')
self.top_image_label.place(x=130, y=25)
# -------------------- heading ----------------
self.heading = tk.Label(self.top, text='Update People', bg='white', font='arial 15 bold', fg='#34baeb')
self.heading.place(x=230, y=40)
# ------------------------ date -------------------------------
self.date_lbl = tk.Label(self.top, text=f'Date: {date}', font='arial 11 bold', bg='white', fg='#ebb434')
self.date_lbl.place(x=500, y=10)
# ------------- query -----------------------
query = 'select * from "addressbook" where person_id = {}'.format(person_id)
result = cur.execute(query).fetchone()
self.person_id = person_id
person_name = result[1]
person_surname = result[2]
email = result[3]
phone = result[4]
address = result[5]
#------------------ name ---------------
self.label_name = tk.Label(self.bottom, text='Name: ', font='Arial 12 bold', bg='#ebb134')
self.label_name.place(x=40, y=40)
self.entry_name = tk.Entry(self.bottom, width=30, bd=4)
self.entry_name.insert(0, person_name)
self.entry_name.place(x=175, y=40)
#------------- surname -------------------
self.label_surname = tk.Label(self.bottom, text='Surname: ', font='Arial 12 bold', bg='#ebb134')
self.label_surname.place(x=40, y=80)
self.entry_surname = tk.Entry(self.bottom, width=30, bd=4)
self.entry_surname.insert(0, person_surname)
self.entry_surname.place(x=175, y=80)
#------------------ email --------------------
self.label_email = tk.Label(self.bottom, text='Email: ', font='Arial 12 bold', bg='#ebb134')
self.label_email.place(x=40, y=120)
self.entry_email = tk.Entry(self.bottom, width=30, bd=4)
self.entry_email.insert(0, email)
self.entry_email.place(x=175, y=120)
#------------- phone number ---------------
self.label_phone = tk.Label(self.bottom, text='Phone Number: ', font='Arial 12 bold', bg='#ebb134')
self.label_phone.place(x=40, y=160)
self.entry_phone = tk.Entry(self.bottom, width=30, bd=4)
self.entry_phone.insert(0, phone)
self.entry_phone.place(x=175, y=160)
#------------ address -------------
self.label_Address = tk.Label(self.bottom, text='Address: ', font='Arial 12 bold', bg='#ebb134')
self.label_Address.place(x=40, y=200)
self.entry_Address = tk.Text(self.bottom, width=24, height=3, wrap='word')
self.entry_Address.insert(1.0, address)
self.entry_Address.place(x=175, y=200)
#--------- submit btn ----------------
self.submit_btn = tk.Button(self.bottom, text='Update', font='Arial 12 bold', command=self.update_people)
self.submit_btn.place(x=130, y=280)
Functions inside "Update_people" class
def update_people(self):
person_id = self.person_id
name = self.entry_name.get()
surname = self.entry_surname.get()
email = self.entry_email.get()
phone = self.entry_phone.get()
address = self.entry_Address.get(1.0, 'end-1c')
query = "update 'addressbook' set person_name = '{}', person_surname = '{}', person_email = '{}', person_phone = '{}', person_address = '{}' where person_id = {}".format(name, surname, email, phone, address, person_id)
try:
cur.execute(query)
con.commit()
tk.messagebox.showinfo('Success', 'Information Successfully Updated')
self.destroy()
except Exception as e:
tk.messagebox.showerror('Error', str(e))
self.destroy()
So the full codes of "update_people.py" is :-
import tkinter as tk
import _sqlite3
from tkinter import PhotoImage
import datetime
from tkinter import messagebox
date = datetime.datetime.now().date()
date = str(date)
con = _sqlite3.connect('database.db')
cur = con.cursor()
class Update_people(tk.Toplevel):
def __init__(self, person_id):
tk.Toplevel.__init__(self)
self.geometry('650x550+380+80')
self.title('My People')
self.resizable(0,0)
self.top = tk.Frame(self, height=150, bg='white')
self.top.pack(fill=tk.X)
self.bottom=tk.Frame(self, height=500, bg='#ebb134')
self.bottom.pack(fill=tk.X)
# ---------- icon ------------
self.top_image = PhotoImage(file='icons/people.png')
self.top_image_label = tk.Label(self.top, image=self.top_image, bg='white')
self.top_image_label.place(x=130, y=25)
# -------------------- heading ----------------
self.heading = tk.Label(self.top, text='Update People', bg='white', font='arial 15 bold', fg='#34baeb')
self.heading.place(x=230, y=40)
# ------------------------ date -------------------------------
self.date_lbl = tk.Label(self.top, text=f'Date: {date}', font='arial 11 bold', bg='white', fg='#ebb434')
self.date_lbl.place(x=500, y=10)
# ------------- query -----------------------
query = 'select * from "addressbook" where person_id = {}'.format(person_id)
result = cur.execute(query).fetchone()
self.person_id = person_id
person_name = result[1]
person_surname = result[2]
email = result[3]
phone = result[4]
address = result[5]
# name
self.label_name = tk.Label(self.bottom, text='Name: ', font='Arial 12 bold', bg='#ebb134')
self.label_name.place(x=40, y=40)
self.entry_name = tk.Entry(self.bottom, width=30, bd=4)
self.entry_name.insert(0, person_name)
self.entry_name.place(x=175, y=40)
# surname
self.label_surname = tk.Label(self.bottom, text='Surname: ', font='Arial 12 bold', bg='#ebb134')
self.label_surname.place(x=40, y=80)
self.entry_surname = tk.Entry(self.bottom, width=30, bd=4)
self.entry_surname.insert(0, person_surname)
self.entry_surname.place(x=175, y=80)
# email
self.label_email = tk.Label(self.bottom, text='Email: ', font='Arial 12 bold', bg='#ebb134')
self.label_email.place(x=40, y=120)
self.entry_email = tk.Entry(self.bottom, width=30, bd=4)
self.entry_email.insert(0, email)
self.entry_email.place(x=175, y=120)
# phone number
self.label_phone = tk.Label(self.bottom, text='Phone Number: ', font='Arial 12 bold', bg='#ebb134')
self.label_phone.place(x=40, y=160)
self.entry_phone = tk.Entry(self.bottom, width=30, bd=4)
self.entry_phone.insert(0, phone)
self.entry_phone.place(x=175, y=160)
# address
self.label_Address = tk.Label(self.bottom, text='Address: ', font='Arial 12 bold', bg='#ebb134')
self.label_Address.place(x=40, y=200)
self.entry_Address = tk.Text(self.bottom, width=24, height=3, wrap='word')
self.entry_Address.insert(1.0, address)
self.entry_Address.place(x=175, y=200)
# submit btn
self.submit_btn = tk.Button(self.bottom, text='Update', font='Arial 12 bold', command=self.update_people)
self.submit_btn.place(x=130, y=280)
def update_people(self):
person_id = self.person_id
name = self.entry_name.get()
surname = self.entry_surname.get()
email = self.entry_email.get()
phone = self.entry_phone.get()
address = self.entry_Address.get(1.0, 'end-1c')
query = "update 'addressbook' set person_name = '{}', person_surname = '{}', person_email = '{}', person_phone = '{}', person_address = '{}' where person_id = {}".format(name, surname, email, phone, address, person_id)
try:
cur.execute(query)
con.commit()
tk.messagebox.showinfo('Success', 'Information Successfully Updated')
self.destroy()
except Exception as e:
tk.messagebox.showerror('Error', str(e))
self.destroy()
Thank You
Waivio AI Assistant
How can I help you today?
Comments