Advertisement
EyeceScream

Finished with the first doc

Sep 7th, 2018
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.60 KB | None | 0 0
  1. #Imports
  2. import tkinter
  3. from tkinter import filedialog
  4. from tkinter import *
  5. import json
  6.  
  7. window = tkinter.Tk()
  8. window.title("Employee Time Sheet")
  9. window.geometry("1400x820")
  10. window.wm_iconbitmap('application.ico')
  11. window.configure(background='#fcf9f0')
  12.  
  13.  
  14.  
  15.  
  16. #Labels
  17. titleLbl = tkinter.Label(window, text='RKT Employee Time Sheet',font=(None,16),height=3,background='#fcf9f0')
  18. titleLbl.grid(row=0, columnspan=8)
  19.  
  20. employeeLbl = tkinter.Label(window, text = 'Employee:', height=3,font=(None,12),background= '#fcf9f0')
  21. employeeLbl.grid(row=1,column=0,padx=1)
  22.  
  23. companyLbl = tkinter.Label(window, text = 'Company',background='#fcf9f0', relief=RAISED)
  24. companyLbl.grid(row=2, column=0,padx=1, ipadx=33)
  25.  
  26. leaseLbl = tkinter.Label(window, text = 'Lease',background='#fcf9f0',relief=RAISED)
  27. leaseLbl.grid(row=2, column=1,padx=1,ipadx=45)
  28.  
  29. propLbl = tkinter.Label(window, text = 'Porperty Number', background= '#fcf9f0',relief=RAISED)
  30. propLbl.grid(row=2, column=2,padx=1,ipadx=13)
  31.  
  32.  
  33. wonLbl = tkinter.Label(window, text = 'Work Order Number',background='#fcf9f0',relief=RAISED)
  34. wonLbl.grid(row=2, column=3,padx=1,ipadx=5)
  35.  
  36. dateLbl = tkinter.Label(window, text = 'Date',background='#fcf9f0',relief=RAISED)
  37. dateLbl.grid(row=2, column=4,padx=1,ipadx=46)
  38.  
  39. tiLbl = tkinter.Label(window, text = 'Time In',background='#fcf9f0',relief=RAISED)
  40. tiLbl.grid(row=2, column=5,padx=1,ipadx=37)
  41.  
  42. toLbl = tkinter.Label(window, text = 'Time Out',background='#fcf9f0',relief=RAISED)
  43. toLbl.grid(row=2, column=6,padx=1,ipadx=34)
  44.  
  45.  
  46. mileageLbl = tkinter.Label(window, text = 'Mileage',background='#fcf9f0',relief=RAISED)
  47. mileageLbl.grid(row=2, column=7,padx=1,ipadx=36)
  48.  
  49.  
  50. #Entrys
  51.  
  52. #EMPLOYEE
  53. ent_name = tkinter.Entry(font = "Helvetica 11")
  54. ent_name.grid(row=1,column=1,padx=1,pady=2)
  55.  
  56. #Rest of Entrys
  57.  
  58. def generate_rows(entry_names, amount):
  59.     data = {
  60.     'data': {},
  61.     'name': ''
  62. }
  63.     for x in range(1, amount):
  64.       r = x+2
  65.       for col, name in enumerate(entry_names):
  66.         ent = tkinter.Entry(font = "Helvetica 11")
  67.         ent.grid(row=r, column=col, pady=2)
  68.         data['data'][name+str(x)] = ent
  69.     return data
  70.  
  71. entry_names = (
  72.   'ent_company', 'ent_lease',
  73.   'ent_property', 'ent_won',
  74.   'ent_date', 'ent_timein',
  75.   'ent_timeout', 'ent_mileage'
  76. )
  77. data = generate_rows(entry_names, 25)
  78.  
  79.  
  80.  
  81. class fileManagement:
  82.  
  83.     def save():
  84.        
  85.         win2 = Toplevel()
  86.         win2.title("Save as...")
  87.         win2.configure(background='#fcf9f0')
  88.         win2.wm_iconbitmap('save.ico')
  89.         win2Lbl= Label(win2, text = "File Name:",background='#fcf9f0')
  90.         win2Lbl.grid(row = 0, column = 0)
  91.        
  92.         win2Ent = tkinter.Entry(win2)
  93.         win2Ent.grid(row=0,column = 1, sticky=NSEW)
  94.         win2.geometry("250x200")
  95.        
  96.    
  97.         def OkPressed():
  98.            
  99.             json_data = { key: value.get() for key, value in data['data'].items()}
  100.             json_data['name'] = ent_name.get()
  101.            
  102.             with open(f'{win2Ent.get()}.json', 'w+') as file:
  103.                     json.dump(json_data, file, indent=4)
  104.             win2.destroy()
  105.        
  106.         win2B = Button(win2, text = "OK", command = OkPressed)
  107.         win2B.grid(row=1, column = 1, sticky=NSEW)
  108.            
  109.    
  110.     def load():
  111.        
  112.         selectedFile = filedialog.askopenfilename(initialdir = "C:/" , title = "Select file", filetypes = (("JSON File", "*.json"),("All Files","*.*")))
  113.  
  114.         with open(f'{selectedFile}', 'r') as file:
  115.             json_data = json.load(file)
  116.  
  117.         for name in data['data']:
  118.             text= json_data[name]
  119.             ent= data['data'][name]
  120.             ent.delete(0,'end')
  121.             ent.insert(0, text)
  122.             ent_name.delete(0, 'end')
  123.             ent_name.insert(0, json_data['name'])
  124.  
  125.  
  126.     def clear():
  127.        
  128.         clear_win = Toplevel()
  129.         clear_win.geometry("300x150")
  130.         clear_win.title("Clear All")
  131.         clear_win.configure(background='#fcf9f0')
  132.         clear_win.wm_iconbitmap('action_delete.ico')
  133.         clear_win_label = Label(clear_win,text= "Are you sure you want to clear all data?",background='#fcf9f0')
  134.         clear_win_label.grid(row=0,column = 1, sticky=NSEW)
  135.        
  136.        
  137.         def Yes():
  138.             for name in data['data']:
  139.                 ent= data['data'][name]
  140.                 ent_name.delete(0, 'end')
  141.                 ent.delete(0,'end')
  142.             clear_win.destroy()
  143.        
  144.         def No():
  145.             clear_win.destroy()
  146.  
  147.         Yes_B= Button(clear_win, text = "Yes", command= Yes)
  148.         Yes_B.grid(row=1,column=0, sticky= E)
  149.  
  150.         No_B= Button(clear_win, text = "No", command= No)
  151.         No_B.grid(row=1,column=2, sticky= W)
  152.  
  153. #Buttons
  154.  
  155. load_B = Button(window, text = "Load", command = fileManagement.load)
  156. load_B.grid(row=0,column=6, sticky=NE)
  157.  
  158. save_B = Button(window, text = "Save", command = fileManagement.save)
  159. save_B.grid(row=0,column=6, sticky=NW)
  160.  
  161. clear_B = Button(window, text = "Clear All", command = fileManagement.clear)
  162. clear_B.grid(row=0,column=6,sticky=N)
  163.  
  164. window.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement