mirror of
https://github.com/bckelley/partman.git
synced 2026-08-24 03:24:11 -05:00
140 lines
3.8 KiB
Python
140 lines
3.8 KiB
Python
from email import message
|
|
from select import select
|
|
from tkinter import *
|
|
from tkinter import messagebox
|
|
from db import Database
|
|
|
|
|
|
|
|
|
|
|
|
db = Database('store.db')
|
|
|
|
def populate_list():
|
|
part_list.delete(0, END)
|
|
for row in db.fetch():
|
|
part_list.insert(END, row)
|
|
|
|
def add_part():
|
|
if part_txt.get() == '' or customer_txt.get() == '' or retailer_txt.get() == '' or price_txt.get() == '':
|
|
messagebox.showerror('required Fields', 'Please include all fields')
|
|
return
|
|
|
|
db.insert(part_txt.get(),
|
|
customer_txt.get(),
|
|
retailer_txt.get(),
|
|
price_txt.get())
|
|
part_list.delete(0, END)
|
|
part_list.insert(END,
|
|
part_txt.get(),
|
|
customer_txt.get(),
|
|
retailer_txt.get(),
|
|
price_txt.get())
|
|
populate_list()
|
|
|
|
def select_item(event):
|
|
try:
|
|
|
|
global selected_item
|
|
index = part_list.curselection()[0]
|
|
selected_item = part_list.get(index)
|
|
|
|
part_entry.delete(0, END)
|
|
part_entry.insert(END, selected_item[1])
|
|
customer_entry.delete(0, END)
|
|
customer_entry.insert(END, selected_item[2])
|
|
retailer_entry.delete(0, END)
|
|
retailer_entry.insert(END, selected_item[3])
|
|
price_entry.delete(0, END)
|
|
price_entry.insert(END, selected_item[4])
|
|
|
|
except IndexError:
|
|
pass
|
|
|
|
|
|
def remove_part():
|
|
db.remove(selected_item[0])
|
|
clear_txt()
|
|
populate_list()
|
|
|
|
def update_part():
|
|
db.update(selected_item[0],
|
|
part_txt.get(),
|
|
customer_txt.get(),
|
|
retailer_txt.get(),
|
|
price_txt.get())
|
|
populate_list()
|
|
|
|
def clear_txt():
|
|
part_entry.delete(0, END)
|
|
customer_entry.delete(0, END)
|
|
retailer_entry.delete(0, END)
|
|
price_entry.delete(0, END)
|
|
|
|
# create window object
|
|
app = Tk()
|
|
|
|
# Part
|
|
part_txt = StringVar()
|
|
part_lbl = Label(app, text='Part Name', font=('bold', 14), pady=20).grid(row=0, column=0, sticky=W)
|
|
part_entry = Entry(app, textvariable=part_txt)
|
|
part_entry.grid(row=0, column=1)
|
|
|
|
# Customer
|
|
customer_txt = StringVar()
|
|
customer_lbl = Label(app, text='Customer', font=('bold', 14)).grid(row=0, column=2, sticky=W)
|
|
customer_entry = Entry(app, textvariable=customer_txt)
|
|
customer_entry.grid(row=0, column=3)
|
|
|
|
# Retailer
|
|
retailer_txt = StringVar()
|
|
retailer_lbl = Label(app, text='Retailer', font=('bold', 14)).grid(row=1, column=0, sticky=W)
|
|
retailer_entry = Entry(app, textvariable=retailer_txt)
|
|
retailer_entry.grid(row=1, column=1)
|
|
|
|
# Price
|
|
price_txt = StringVar()
|
|
price_lbl = Label(app, text='Price', font=('bold', 14)).grid(row=1, column=2, sticky=W)
|
|
price_entry = Entry(app, textvariable=price_txt)
|
|
price_entry.grid(row=1, column=3)
|
|
|
|
# Part List
|
|
part_list = Listbox(app, height=8, width=50, border=0)
|
|
part_list.grid(row=3, column=0, columnspan=3, rowspan=6, pady=20, padx=20)
|
|
|
|
# Create scrollbar
|
|
scrollbar = Scrollbar(app)
|
|
scrollbar.grid(row=3, column=3)
|
|
|
|
# Set scroll to listbox
|
|
part_list.configure(yscrollcommand=scrollbar.set)
|
|
scrollbar.configure(command=part_list.yview)
|
|
|
|
# Bind Select
|
|
part_list.bind('<<ListboxSelect>>', select_item)
|
|
|
|
# Buttons
|
|
add_btn = Button(app, text='Add Part', width=12, command=add_part)
|
|
add_btn.grid(row=2, column=0, pady=20)
|
|
|
|
remove_btn = Button(app, text='Remove Part', width=12, command=remove_part)
|
|
remove_btn.grid(row=2, column=1)
|
|
|
|
update_btn = Button(app, text='Update Part', width=12, command=update_part)
|
|
update_btn.grid(row=2, column=2)
|
|
|
|
clear_btn = Button(app, text='Clear Input', width=12, command=clear_txt)
|
|
clear_btn.grid(row=2, column=3)
|
|
|
|
|
|
|
|
|
|
app.title("Part Manager")
|
|
app.geometry('700x350')
|
|
|
|
# Populate List
|
|
populate_list()
|
|
|
|
|
|
# start
|
|
app.mainloop() |