Advertisement
jupiterbjy

63642745_so

Aug 28th, 2020
2,851
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 7.68 KB | None | 0 0
  1. from tkinter import *
  2. import pandas as pd
  3.  
  4. global main_window
  5.  
  6.  
  7. def quit():
  8.     main_window.destroy()
  9.  
  10.  
  11. def entry_labels():
  12.     leader_label = Label(main_frame, text="Customer Name")
  13.     leader_label.grid(column=0, row=0)
  14.  
  15.     location_label = Label(main_frame, text="Receipt Number")
  16.     location_label.grid(column=0, row=1)
  17.  
  18.     numcampers_label = Label(main_frame, text="Item Hired")
  19.     numcampers_label.grid(column=0, row=2)
  20.  
  21.     weather_label = Label(main_frame, text="Number Hired")
  22.     weather_label.grid(column=0, row=3)
  23.  
  24.     row_label = Label(main_frame, text="Row")
  25.     row_label.grid(column=3, row=2)
  26.  
  27.  
  28. def button():
  29.     print_button = Button(main_frame, text="Print Details", command=append_entry)
  30.     print_button.grid(column=3, row=1)
  31.  
  32.     quit_button = Button(main_frame, text="Quit", command=quit)
  33.     quit_button.grid(column=4, row=0)
  34.  
  35.     delete_row_button = Button(main_frame, text="Delete Row", command=delete_row)
  36.     delete_row_button.grid(column=4, row=3)
  37.  
  38.  
  39. def entry():
  40.     global name_entry
  41.     name_entry = Entry(main_frame)
  42.     name_entry.grid(column=1, row=0)
  43.  
  44.     global receipt_entry
  45.     receipt_entry = Entry(main_frame)
  46.     receipt_entry.grid(column=1, row=1)
  47.  
  48.     global hired_entry
  49.     hired_entry = Entry(main_frame)
  50.     hired_entry.grid(column=1, row=2)
  51.  
  52.     global num_hired_entry
  53.     num_hired_entry = Entry(main_frame)
  54.     num_hired_entry.grid(column=1, row=3)
  55.  
  56.     global delete_row_entry
  57.     delete_row_entry = Entry(main_frame)
  58.     delete_row_entry.grid(column=4, row=2)
  59.  
  60.  
  61. def table_headers():
  62.     row_header = Label(main_frame, text="Row", font="Arial 10 bold")
  63.     row_header.grid(column=0, row=4)
  64.  
  65.     customer_header = Label(main_frame, text="Customer Name", font="Arial 10 bold")
  66.     customer_header.grid(column=1, row=4)
  67.  
  68.     receipt_header = Label(main_frame, text="Receipt Number", font="Arial 10 bold")
  69.     receipt_header.grid(column=3, row=4)
  70.  
  71.     item_header = Label(main_frame, text="Item Hired", font="Arial 10 bold")
  72.     item_header.grid(column=2, row=4)
  73.  
  74.     num_header = Label(main_frame, text="Number Hired", font="Arial 10 bold")
  75.     num_header.grid(column=4, row=4)
  76.  
  77.  
  78. # def adjust_height(extend, contract):
  79. #   extend = h + 10
  80. #   contract = h - 10
  81.  
  82.  
  83. def adjust_height(delta):
  84.     global w, h, main_window
  85.     h += delta
  86.     main_window.geometry(f"{w}x{h}")
  87.  
  88.  
  89. def append_entry():
  90.     global second_frame
  91.     second_frame = Frame(main_window)
  92.     second_frame.grid(column=0, row=6)
  93.  
  94.     leader_error_var.set("")
  95.     location_error_var.set("")
  96.     numcamper_error_var.set("")
  97.     weather_error_var.set("")
  98.  
  99.     global name_count
  100.     name_count = 0
  101.     global ROWS_ABOVE
  102.     ROWS_ABOVE = 6
  103.  
  104.     try:
  105.         name_entry_str = str(name_entry.get())
  106.         hired_entry_str = str(hired_entry.get())
  107.         receipt_entry_int = str(receipt_entry.get())
  108.         num_hired_entry_int = str(num_hired_entry.get())
  109.  
  110.         if len(name_entry.get()) != 0:
  111.             input_data_col1.append([name_entry_str])
  112.             input_data_col2.append([hired_entry_str])
  113.             input_data_col3.append([receipt_entry_int])
  114.             input_data_col4.append([num_hired_entry_int])
  115.             counters["total_entries"] += 1
  116.  
  117.         print(input_data_col1)
  118.         print(input_data_col2)
  119.         print(input_data_col3)
  120.         print(input_data_col4)
  121.  
  122.         while name_count < counters["total_entries"]:
  123.             global name
  124.  
  125.             name = Label(
  126.                 second_frame, text=(input_data_col1[name_count][-1])
  127.             )  ##using -1 selects the latest entry in the list
  128.             name.grid(column=1, row=name_count + ROWS_ABOVE, padx=(60, 60))
  129.  
  130.             item = Label(second_frame, text=(input_data_col2[name_count][-1]))
  131.             item.grid(column=2, row=name_count + ROWS_ABOVE, padx=(60, 60))
  132.  
  133.             row = Label(second_frame, text=name_count)
  134.             row.grid(column=0, row=name_count + ROWS_ABOVE, padx=(60, 60))
  135.  
  136.             receipt = Label(second_frame, text=(input_data_col3[name_count][-1]))
  137.             receipt.grid(
  138.                 column=3, row=name_count + ROWS_ABOVE, padx=(60, 60),
  139.             )
  140.  
  141.             num = Label(second_frame, text=(input_data_col4[name_count][-1]))
  142.             num.grid(column=4, row=name_count + ROWS_ABOVE, padx=(60, 60))
  143.  
  144.             name_count += 1
  145.  
  146.         name_entry.delete(0, END)
  147.         receipt_entry.delete(0, END)
  148.         hired_entry.delete(0, END)
  149.         num_hired_entry.delete(0, END)
  150.  
  151.         adjust_height(10)
  152.  
  153.     except:
  154.         leader_error_var.set("Check inputs")
  155.         # location_error_var.set("please enter a valid num")
  156.         # numcamper_error_var.set("numcamper error test")
  157.         weather_error_var.set("")
  158.  
  159.         name_entry.delete(0, END)
  160.         receipt_entry.delete(0, END)
  161.         hired_entry.delete(0, END)
  162.         num_hired_entry.delete(0, END)
  163.  
  164.  
  165. def delete_row():
  166.     del_item = int(delete_row_entry.get())
  167.  
  168.     try:
  169.  
  170.         counters["total_entries"] -= 1
  171.         input_data_col1.pop(del_item)
  172.         input_data_col2.pop(del_item)
  173.         input_data_col3.pop(del_item)
  174.         input_data_col4.pop(del_item)
  175.  
  176.         for widget in second_frame.winfo_children():
  177.             widget.destroy()
  178.         # second_frame.pack()
  179.  
  180.         ##destroys all the widgets in the frame so it can be
  181.         ##reprinted, but without the deleted data
  182.  
  183.         append_entry()
  184.         adjust_height(-10)
  185.  
  186.         print(input_data_col1)
  187.         print(input_data_col2)
  188.         print(input_data_col3)
  189.         print(input_data_col4)
  190.  
  191.     except:
  192.         delete_row_entry.delete(0, END)
  193.  
  194.  
  195. def error_prevention():
  196.     # leader_error_var.set("leader error test")
  197.     # location_error_var.set("location error test")
  198.     # numcamper_error_var.set("numcamper error test")
  199.     # weather_error_var.set("weather error test")
  200.     # weather_error_var.set("_______________")
  201.  
  202.     leader_error = Label(main_frame, textvariable=leader_error_var, fg="red")
  203.     leader_error.grid(column=2, row=0)
  204.  
  205.     location_error = Label(main_frame, textvariable=location_error_var, fg="red")
  206.     location_error.grid(column=2, row=1)
  207.  
  208.     numcamper_error = Label(
  209.         main_frame, textvariable=numcamper_error_var, fg="red", width=13
  210.     )
  211.     numcamper_error.grid(column=2, row=2)
  212.  
  213.     weather_error = Label(main_frame, textvariable=weather_error_var, fg="red")
  214.     weather_error.grid(column=2, row=3)
  215.  
  216.  
  217. def main():
  218.     global main_window
  219.     main_window = Tk()
  220.  
  221.     global w, h
  222.     w = 720
  223.     h = 150  # no need for int(150)
  224.  
  225.     main_window.geometry("{width}x{height}".format(width=w, height=h))
  226.  
  227.     global input_data_col1
  228.     input_data_col1 = []
  229.  
  230.     global input_data_col2
  231.     input_data_col2 = []
  232.  
  233.     global input_data_col3
  234.     input_data_col3 = []
  235.  
  236.     global input_data_col4
  237.     input_data_col4 = []
  238.  
  239.     global input_data
  240.  
  241.     input_data = []
  242.  
  243.     global main_frame
  244.     main_frame = Frame(main_window)
  245.     main_frame.grid(row=0, column=0)
  246.  
  247.     global counters
  248.     counters = {"total_entries": 0, "name_count": 0}
  249.  
  250.     # global number
  251.     # number = {'total_entries':0}
  252.  
  253.     def stringvars():
  254.         global location_error_var
  255.         location_error_var = StringVar()
  256.         location_error_var.set("")
  257.  
  258.         global numcamper_error_var
  259.         numcamper_error_var = StringVar()
  260.         numcamper_error_var.set("")
  261.  
  262.         global leader_error_var
  263.         leader_error_var = StringVar()
  264.         leader_error_var.set("")
  265.  
  266.         global weather_error_var
  267.         weather_error_var = StringVar()
  268.         leader_error_var.set("")
  269.  
  270.     stringvars()
  271.  
  272.     entry_labels()
  273.     entry()
  274.     error_prevention()
  275.     button()
  276.     table_headers()
  277.  
  278.  
  279. main()
  280. main_window.mainloop()
  281.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement