Advertisement
EyeceScream

Almost done

Sep 7th, 2018
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.51 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("1280x820")
  10. window.wm_iconbitmap('file.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()
  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()
  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, 20)
  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.        
  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.  
  127.  
  128.  
  129. #Needs Work
  130. #
  131. #
  132.     def clear():
  133.        
  134.         clear_win = Toplevel()
  135.         clear_win.geometry("300x150")
  136.         clear_win.title("Clear All")
  137.         clear_win.configure(background='#fcf9f0')
  138.         clear_win_label = Label(clear_win,text= "Are you sure you want to clear all data?",background='#fcf9f0')
  139.         clear_win_label.grid(row=0,column = 1, sticky=NSEW)
  140.        
  141.        
  142.         def Yes():
  143.             for name in data['data']:
  144.                 ent= data['data'][name]
  145.                 ent_name.delete(0, 'end')
  146.                 ent.delete(0,'end')
  147.             clear_win.destroy
  148.        
  149.         def No():
  150.             clear_win.destroy
  151.  
  152.         Yes_B= Button(clear_win, text = "Yes", command= Yes)
  153.         Yes_B.grid(row=1,column=0, sticky= E)
  154.  
  155.         No_B= Button(clear_win, text = "No", command= No)
  156.         No_B.grid(row=1,column=2, sticky= W)
  157.  
  158. #
  159. #
  160.  
  161.  
  162. #Buttons
  163.  
  164. load_B = Button(window, text = "Load", command = fileManagement.load)
  165. load_B.grid(row=0,column=9, sticky=E)
  166.  
  167. save_B = Button(window, text = "Save", command = fileManagement.save)
  168. save_B.grid(row=1,column=9, sticky=NE)
  169.  
  170. clear_B = Button(window, text = "Clear All", command = fileManagement.clear)
  171. clear_B.grid(row=2,column=9, sticky=NSEW)
  172.  
  173.  
  174. window.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement