Advertisement
EyeceScream

Alot Cleaner but having trouble understanding how to save.

Sep 6th, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.53 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. employeeEnt = tkinter.Entry()
  54. employeeEnt.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.     for x in range(1, amount):
  61.       r = x+2
  62.       for col, name in enumerate(entry_names):
  63.         ent = tkinter.Entry()
  64.         ent.grid(row=r, column=col, pady=2)
  65.         data[name+str(x)] = ent
  66.     return data
  67.  
  68. entry_names = (
  69.   'ent_company', 'ent_lease',
  70.   'ent_property', 'ent_won',
  71.   'ent_date', 'ent_timein',
  72.   'ent_timeout', 'ent_mileage'
  73. )
  74. data = generate_rows(entry_names, 20)
  75.  
  76.  
  77. class fileManagement:
  78.  
  79.     def save():
  80.        
  81.         window.withdraw()
  82.         win2 = Toplevel()
  83.         win2.title("Save as...")
  84.         win2.configure(background='#fcf9f0')
  85.        
  86.         win2Lbl= Label(win2, text = "File Name:",background='#fcf9f0')
  87.         win2Lbl.grid(row = 0, column = 0)
  88.        
  89.         win2Ent = tkinter.Entry(win2)
  90.         win2Ent.grid(row=0,column = 1, sticky=NSEW)
  91.         win2.geometry("250x200")
  92.        
  93.    
  94.         def OkPressed():
  95.  
  96.             with open(f'{win2Ent.get()}.json', 'w+') as file:
  97.                     json.dump(data, file)
  98.             win2.destroy()
  99.             window.deiconify()
  100.        
  101.         win2B = Button(win2, text = "OK", command = OkPressed)
  102.         win2B.grid(row=1, column = 1, sticky=NSEW)
  103.                
  104.            
  105.    
  106.     def load():
  107.        
  108.         selectedFile = filedialog.askopenfilename(initialdir = "C:/" , title = "Select file", filetypes = (("JSON File", "*.json"),("All Files","*.*")))
  109.  
  110.         with open(f'{selectedFile}', 'r') as file:
  111.             data = json.load(file)
  112.  
  113.         for employee in data:
  114.             employeeEnt.delete(0,'end')
  115.             employeeEnt.insert(0, data [employee])
  116.        
  117.         for company in data:
  118.             companyEnt2.delete(0, 'end')
  119.             companyEnt2.insert(0, data [company])
  120. #Buttons
  121.  
  122. copyB = Button(window, text = "Load", command = fileManagement.load)
  123. copyB.grid(row=0,column=9, sticky=E)
  124.  
  125. saveB = Button(window, text = "Save", command = fileManagement.save)
  126. saveB.grid(row=1,column=10, sticky=E)
  127.  
  128.  
  129.  
  130. window.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement