Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #Imports
- import tkinter
- from tkinter import filedialog
- from tkinter import *
- import json
- window = tkinter.Tk()
- window.title("Employee Time Sheet")
- window.geometry("1400x820")
- window.wm_iconbitmap('application.ico')
- window.configure(background='#fcf9f0')
- #Labels
- titleLbl = tkinter.Label(window, text='RKT Employee Time Sheet',font=(None,16),height=3,background='#fcf9f0')
- titleLbl.grid(row=0, columnspan=8)
- employeeLbl = tkinter.Label(window, text = 'Employee:', height=3,font=(None,12),background= '#fcf9f0')
- employeeLbl.grid(row=1,column=0,padx=1)
- companyLbl = tkinter.Label(window, text = 'Company',background='#fcf9f0', relief=RAISED)
- companyLbl.grid(row=2, column=0,padx=1, ipadx=33)
- leaseLbl = tkinter.Label(window, text = 'Lease',background='#fcf9f0',relief=RAISED)
- leaseLbl.grid(row=2, column=1,padx=1,ipadx=45)
- propLbl = tkinter.Label(window, text = 'Porperty Number', background= '#fcf9f0',relief=RAISED)
- propLbl.grid(row=2, column=2,padx=1,ipadx=13)
- wonLbl = tkinter.Label(window, text = 'Work Order Number',background='#fcf9f0',relief=RAISED)
- wonLbl.grid(row=2, column=3,padx=1,ipadx=5)
- dateLbl = tkinter.Label(window, text = 'Date',background='#fcf9f0',relief=RAISED)
- dateLbl.grid(row=2, column=4,padx=1,ipadx=46)
- tiLbl = tkinter.Label(window, text = 'Time In',background='#fcf9f0',relief=RAISED)
- tiLbl.grid(row=2, column=5,padx=1,ipadx=37)
- toLbl = tkinter.Label(window, text = 'Time Out',background='#fcf9f0',relief=RAISED)
- toLbl.grid(row=2, column=6,padx=1,ipadx=34)
- mileageLbl = tkinter.Label(window, text = 'Mileage',background='#fcf9f0',relief=RAISED)
- mileageLbl.grid(row=2, column=7,padx=1,ipadx=36)
- #Entrys
- #EMPLOYEE
- ent_name = tkinter.Entry(font = "Helvetica 11")
- ent_name.grid(row=1,column=1,padx=1,pady=2)
- #Rest of Entrys
- def generate_rows(entry_names, amount):
- data = {
- 'data': {},
- 'name': ''
- }
- for x in range(1, amount):
- r = x+2
- for col, name in enumerate(entry_names):
- ent = tkinter.Entry(font = "Helvetica 11")
- ent.grid(row=r, column=col, pady=2)
- data['data'][name+str(x)] = ent
- return data
- entry_names = (
- 'ent_company', 'ent_lease',
- 'ent_property', 'ent_won',
- 'ent_date', 'ent_timein',
- 'ent_timeout', 'ent_mileage'
- )
- data = generate_rows(entry_names, 25)
- class fileManagement:
- def save():
- win2 = Toplevel()
- win2.title("Save as...")
- win2.configure(background='#fcf9f0')
- win2.wm_iconbitmap('save.ico')
- win2Lbl= Label(win2, text = "File Name:",background='#fcf9f0')
- win2Lbl.grid(row = 0, column = 0)
- win2Ent = tkinter.Entry(win2)
- win2Ent.grid(row=0,column = 1, sticky=NSEW)
- win2.geometry("250x200")
- def OkPressed():
- json_data = { key: value.get() for key, value in data['data'].items()}
- json_data['name'] = ent_name.get()
- with open(f'{win2Ent.get()}.json', 'w+') as file:
- json.dump(json_data, file, indent=4)
- win2.destroy()
- win2B = Button(win2, text = "OK", command = OkPressed)
- win2B.grid(row=1, column = 1, sticky=NSEW)
- def load():
- selectedFile = filedialog.askopenfilename(initialdir = "C:/" , title = "Select file", filetypes = (("JSON File", "*.json"),("All Files","*.*")))
- with open(f'{selectedFile}', 'r') as file:
- json_data = json.load(file)
- for name in data['data']:
- text= json_data[name]
- ent= data['data'][name]
- ent.delete(0,'end')
- ent.insert(0, text)
- ent_name.delete(0, 'end')
- ent_name.insert(0, json_data['name'])
- def clear():
- clear_win = Toplevel()
- clear_win.geometry("300x150")
- clear_win.title("Clear All")
- clear_win.configure(background='#fcf9f0')
- clear_win.wm_iconbitmap('action_delete.ico')
- clear_win_label = Label(clear_win,text= "Are you sure you want to clear all data?",background='#fcf9f0')
- clear_win_label.grid(row=0,column = 1, sticky=NSEW)
- def Yes():
- for name in data['data']:
- ent= data['data'][name]
- ent_name.delete(0, 'end')
- ent.delete(0,'end')
- clear_win.destroy()
- def No():
- clear_win.destroy()
- Yes_B= Button(clear_win, text = "Yes", command= Yes)
- Yes_B.grid(row=1,column=0, sticky= E)
- No_B= Button(clear_win, text = "No", command= No)
- No_B.grid(row=1,column=2, sticky= W)
- #Buttons
- load_B = Button(window, text = "Load", command = fileManagement.load)
- load_B.grid(row=0,column=6, sticky=NE)
- save_B = Button(window, text = "Save", command = fileManagement.save)
- save_B.grid(row=0,column=6, sticky=NW)
- clear_B = Button(window, text = "Clear All", command = fileManagement.clear)
- clear_B.grid(row=0,column=6,sticky=N)
- window.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement