Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from tkinter import *
- import tkinter.ttk as ttk
- import sqlite3
- #create main window
- root = Tk()
- #create title
- root.title("FBI Database")
- #size of window
- root.geometry("1000x800")
- conn = sqlite3.connect("criminals.db")
- try:
- c = conn.cursor()
- c.execute('''CREATE TABLE IF NOT EXISTS criminals(
- first_name TEXT,
- last_name TEXT,
- sex TEXT,
- age INTEGER,
- offense TEXT);''')
- print('table created successfully')
- except:
- print('table already exists')
- conn.rollback()
- #close connection
- conn.close()
- #add function to clear entry boxes
- def clearFields():
- firstNameEn.delete(0, END)
- lastNameEn.delete(0, END)
- sexEn.delete(0, END)
- ageEn.delete(0, END)
- offenseEn.delete(0, END)
- #add function to add and display records
- def addRecord():
- #connect to database
- # use placeholder variables and dictionary
- conn = sqlite3.connect("criminals.db")
- try:
- c = conn.cursor()
- c.execute("INSERT INTO criminals VALUES (?, ?, ?, ?, ?)",
- (firstNameEn.get(), lastNameEn.get(), sexEn.get(), int(ageEn.get()), offenseEn.get()))
- conn.commit()
- print("One record added successfully")
- except:
- print("Error in the add operation")
- conn.rollback()
- conn.close()
- clearFields()
- def displayRecords():
- for row in tvCriminals.get_children():
- tvCriminals.delete(row)
- conn = sqlite3.connect("criminals.db")
- c = conn.cursor()
- c.execute("SELECT *, oid FROM criminals")
- rows = c.fetchall()
- for row in rows:
- first_name, last_name, sex, age, offense, _id = row
- tvCriminals.insert("", 'end', text=_id, values=(first_name, last_name, sex, age, offense))
- conn.close()
- clearFields()
- def updateRecord():
- # connect to database
- # #use place holder variables and dictionary
- conn = sqlite3.connect("criminals.db")
- qry = "UPDATE criminals SET last_name=?, sex=?, age=?, offense=? WHERE first_name=?"
- try:
- c = conn.cursor()
- c.execute(qry, (lastNameEn.get(), sexEn.get(), int(ageEn.get()), offenseEn.get(), firstNameEn.get()))
- conn.commit()
- print("One record updated successfully")
- except:
- print("Error in update operation")
- conn.rollback()
- conn.close()
- clearFields()
- def deleteRecord():
- conn = sqlite3.connect("criminals.db")
- qry = "DELETE FROM criminals WHERE first_name=?"
- try:
- c = conn.cursor()
- c.execute(qry, (firstNameEn.get(),))
- conn.commit()
- print('Record deleted successfully')
- except:
- print("Error in delete operation")
- conn.rollback()
- conn.close()
- clearFields()
- def show_selected_record(event):
- clearFields()
- for selection in tvCriminals.selection():
- item = tvCriminals.item(selection)
- _id, first_name, last_name, sex, age, offense = item["values"]
- firstNameEn.insert(0, first_name)
- lastNameEn.insert(0, last_name)
- sexEn.insert(0, sex)
- ageEn.insert(0, age)
- offenseEn.insert(0, offense)
- #create label widgets
- firstNameLb = Label(root, text="First Name")
- lastNameLb = Label(root, text="Last Name")
- sexLb = Label(root, text="Sex")
- ageLb = Label(root, text="Age")
- offenseLb = Label(root, text="Offense")
- #create entry widgets
- firstNameEn = Entry(root)
- lastNameEn = Entry(root)
- sexEn = Entry(root)
- ageEn = Entry(root)
- offenseEn = Entry(root)
- #create buttons
- addBt = Button(root, text="Add Criminal", command=addRecord)
- updateBt = Button(root, text="Update Criminal", command=updateRecord)
- displayBt = Button(root, text="Display Criminals", command=displayRecords)
- deleteBt = Button(root, text="Delete Criminal", command=deleteRecord)
- #specify where the grid is for the label widgets
- firstNameLb.grid(row=0, column=0)
- lastNameLb.grid(row=1, column=0)
- sexLb.grid(row=2, column=0)
- ageLb.grid(row=3, column=0)
- offenseLb.grid(row=4, column=0)
- #specify where on the grid you're going to add the entry widgets
- firstNameEn.grid(row=0, column=1)
- lastNameEn.grid(row=1, column=1)
- sexEn.grid(row=2, column=1)
- ageEn.grid(row=3, column=1)
- offenseEn.grid(row=4, column=1)
- #specify where on the grid you're going to add the button widgets
- addBt.grid(row=7, column=0)
- deleteBt.grid(row=7, column=1)
- updateBt.grid(row=8, column=0)
- displayBt.grid(row=9, column=0)
- # treeview widget
- #specify tuple columns
- columns = ("#1", "#2", "#3", "#4", "#5", "#6")
- #create a treeview widget specify the columns
- tvCriminals = ttk.Treeview(root, show="headings", height="5", columns=columns)
- #specify the heading the corresponding heading
- tvCriminals.heading('#1', text='First Name', anchor='center')
- tvCriminals.column('#1', width=100, anchor='center', stretch=True)
- tvCriminals.heading('#2', text='Last Name', anchor='center')
- tvCriminals.column('#2', width=100, anchor='center', stretch=True)
- tvCriminals.heading('#3', text='Sex', anchor='center')
- tvCriminals.column('#3', width=50, anchor='center', stretch=True)
- tvCriminals.heading('#4', text='Age', anchor='center')
- tvCriminals.column('#4', width=50, anchor='center', stretch=True)
- tvCriminals.heading('#5', text='Offense', anchor='center')
- tvCriminals.column('#5', width=200, anchor='center', stretch=True)
- #bind the treeview to the function show_selected_record
- tvCriminals.bind("<<TreeviewSelect>>", show_selected_record)
- tvCriminals.grid(row=10, column=0, columnspan=2)
- #call main loop
- root.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement