JUN7

Untitled

Oct 12th, 2020
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 7.71 KB | None | 0 0
  1. from tkinter import *
  2. from tkinter import ttk, messagebox
  3. from datetime import datetime
  4.  
  5. class Aplikasi():
  6.     def __init__(self):
  7.         self.root = Tk()
  8.         self.datas = []
  9.         self.root.title("Tugas Besar 1 | Kelompok 5 | Aplikasi Parkir")
  10.         self.root.geometry("680x400")
  11.         self.root.resizable(width=False, height=False)
  12.         self.root.configure(background='gray13')
  13.         self.batas()
  14.         self.root.mainloop()
  15.  
  16.     def batas(self):
  17.         #judul aplikasi
  18.         Label(self.root, text="Aplikasi Parkir Kelompok 5", font=('Adobe Gothic Std B', 25), bg='gray13', fg='snow').place(x = 15,y = 10)
  19.  
  20.         #pencarian aplikasi
  21.         Label(self.root, text="Cari NoPol", font=('Segoe UI Black', 10), bg='gray13', fg='snow').place(x=17, y=60)
  22.         self.nopol = StringVar()
  23.         Entry(self.root, textvariable=self.nopol, width=16).place(x=95, y=62)
  24.         Button(self.root, text="Cari", font=('Segoe UI Black', 7), width=6, height=1, bg='coral1', command=self.searchData).place(x=200, y=62)
  25.  
  26.         #biaya perjam
  27.         Label(self.root, text="Biaya Per Jam", font=('Segoe UI Black', 17), fg="red", bg='gray13').place(x=370, y=76)
  28.         Label(self.root, text="Rp. 2.000", font=('Segoe UI Black', 40), fg="red", bg='gray13').place(x=370, y=105)
  29.  
  30.         #----------awal form------------
  31.         #noplat
  32.         Label(self.root, text="No Plat Polisi", font=('Segoe UI Black', 10), bg='gray13', fg='snow').place(x=17, y=100)
  33.         self.noplat = StringVar()
  34.         Entry(self.root, textvariable=self.noplat).place(x=110, y=102)
  35.  
  36.         #waktu masuk
  37.         Label(self.root, text="Waktu Masuk", font=('Segoe UI Black', 10), bg='gray13', fg='snow').place(x=17, y=130)
  38.         self.masuk = StringVar()
  39.         Entry(self.root, textvariable=self.masuk).place(x=110, y=132)
  40.         self.masuk.trace("w", self.updateMasuk)
  41.  
  42.         #waktu keluar
  43.         Label(self.root, text="Waktu Keluar", font=('Segoe UI Black', 10), bg='gray13', fg='snow').place(x=17, y=160)
  44.         self.keluar = StringVar()
  45.         Entry(self.root, textvariable=self.keluar).place(x=110, y=162)
  46.         self.keluar.trace("w", self.updateKeluar)
  47.  
  48.         #biaya
  49.         Label(self.root, text="Biaya", font=('Segoe UI Black', 10), bg='gray13', fg='snow').place(x=17, y=190)
  50.         self.biaya = IntVar()
  51.         Entry(self.root, textvariable=self.biaya, fg='snow', state=DISABLED).place(x=110, y=192)
  52.  
  53.         #tombolinput
  54.         Button(self.root, text="Button", font=('Segoe UI Black', 7), width=6, height=1, bg='steelblue1', command=self.insertDataTreeview1).place(x=240, y=192)
  55.         #----------akhir form------------
  56.        
  57.         #judul list
  58.         Label(self.root, text="List Pelanggan Urut Terakhir Keluar", font=('Segoe UI Black', 10), bg='gray13', fg='snow').place(x=17, y=240)
  59.         Label(self.root, text="List Pelanggan Banyak Bayar", font=('Segoe UI Black', 10), bg='gray13', fg='snow').place(x=347, y=240)
  60.         self.DataTreeview1()
  61.         self.DataTreeview2()
  62.  
  63.     def DataTreeview1(self):
  64.         self.treev = ttk.Treeview(selectmode ='browse', height=3)
  65.         self.treev.place(x=19,y=270)
  66.         verscrlbar = ttk.Scrollbar(
  67.                 self.root,  
  68.                 orient ="vertical",  
  69.                 command = self.treev.yview,
  70.             )
  71.         verscrlbar.place(x=312, y=271, height=85)
  72.         self.treev.config(yscrollcommand = verscrlbar.set)
  73.         self.treev["columns"] = ("1", "2", "3", "4")
  74.         self.treev['show'] = 'headings'
  75.         self.treev.column("1", width = 80, anchor ='c')
  76.         self.treev.column("2", width = 70, anchor ='se')
  77.         self.treev.column("3", width = 70, anchor ='se')
  78.         self.treev.column("4", width = 70, anchor ='se')
  79.         self.treev.heading("1", text ="No Plat Polisi")
  80.         self.treev.heading("2", text ="Masuk")
  81.         self.treev.heading("3", text ="Keluar")
  82.         self.treev.heading("4", text ="Biaya")
  83.  
  84.     def DataTreeview2(self):
  85.         self.treev2 = ttk.Treeview(selectmode ='browse', height=3)
  86.         self.treev2.place(x=350,y=270)
  87.         verscrlbar = ttk.Scrollbar(
  88.                 self.root,  
  89.                 orient ="vertical",  
  90.                 command = self.treev2.yview
  91.             )
  92.         verscrlbar.place(x=643, y=271, height=85)
  93.         self.treev2.config(yscrollcommand = verscrlbar.set)
  94.         self.treev2["columns"] = ("1", "2", "3", "4")
  95.         self.treev2['show'] = 'headings'
  96.         self.treev2.column("1", width = 80, anchor ='c')
  97.         self.treev2.column("2", width = 70, anchor ='se')
  98.         self.treev2.column("3", width = 70, anchor ='se')
  99.         self.treev2.column("4", width = 70, anchor ='se')
  100.         self.treev2.heading("1", text ="No Plat Polisi")
  101.         self.treev2.heading("2", text ="Masuk")
  102.         self.treev2.heading("3", text ="Keluar")
  103.         self.treev2.heading("4", text ="Biaya")
  104.  
  105.     def insertDataTreeview1(self):
  106.         self.datas.append(
  107.             {
  108.                 'noplat': str(self.noplat.get()),
  109.                 'masuk': str(self.masuk.get()),
  110.                 'keluar': str(self.keluar.get()),
  111.                 'biaya': self.biaya.get()
  112.             }
  113.         )
  114.         self.treev.insert("", 0,
  115.              values = (str(self.noplat.get()), str(self.masuk.get()), str(self.keluar.get()), self.biaya.get()))
  116.         self.clearDataTreeview2()
  117.         self.insertDataTreeview2()
  118.  
  119.     def insertDataTreeview2(self):
  120.         self.datas.sort(key=self.bSort)
  121.         for x in self.datas:
  122.             self.treev2.insert("", 0,
  123.                 values = (x['noplat'], x['masuk'], x['keluar'], x['biaya']))
  124.  
  125.     def clearDataTreeview2(self):
  126.         try:
  127.             for i in self.treev2.get_children():
  128.                 self.treev2.delete(i)
  129.         except:
  130.             print("error")
  131.    
  132.     def searchData(self):
  133.         found = 0
  134.         text = ""
  135.         for z in self.datas:
  136.             if str(z['noplat']).lower().strip() == str(self.nopol.get()).lower().strip():
  137.                 text += "No. {} | No Plat : {}, Jam Masuk : {}, Jam Keluar : {}, Biaya : Rp. {}.".format(str(found + 1),
  138.                 str(z['noplat']),
  139.                 str(z['masuk']),
  140.                 str(z['keluar']),
  141.                 str(z['biaya']))+"\n"
  142.                 found += 1
  143.         if found > 0:
  144.             messagebox.showinfo("Hasil Pencarian : "+str(self.nopol.get()), message=text)
  145.         else:
  146.             messagebox.showerror("Tidak ditemukan", "Hasil pencarian : {} tidak ditemukan.".format(str(self.nopol.get())))
  147.  
  148.     def updateMasuk(self, *args):
  149.         if(len(str(self.masuk.get()))) >= 8:
  150.             if len(str(self.keluar.get())) >= 8:
  151.                 biaya = self.hitungAplikasi(self.masuk.get(), self.keluar.get())
  152.                 self.biaya.set(biaya)
  153.                 print(biaya)
  154.         else:
  155.             self.biaya.set('0')
  156.  
  157.     def updateKeluar(self, *args):
  158.         if(len(str(self.keluar.get()))) >= 8:
  159.             if len(str(self.masuk.get())) >= 8:
  160.                 biaya = self.hitungAplikasi(self.masuk.get(), self.keluar.get())
  161.                 self.biaya.set(biaya)
  162.                 print(biaya)
  163.         else:
  164.             self.biaya.set('0')
  165.  
  166.     def hitungAplikasi(self, masuk, keluar):
  167.         jam_masuk = str(masuk)
  168.         masukin = datetime.strptime(jam_masuk, "%H:%M:%S")
  169.  
  170.         jam_keluar = str(keluar)
  171.         keluarin = datetime.strptime(jam_keluar, "%H:%M:%S")
  172.        
  173.         get_hour = (datetime.strptime(jam_keluar, "%H:%M:%S") - datetime.strptime(jam_masuk, "%H:%M:%S")).seconds//3600
  174.  
  175.         if((keluarin.minute - masukin.minute)>30):
  176.             get_hour = get_hour+1
  177.         return get_hour * 2000 if get_hour > 0 else 2000
  178.  
  179.     def bSort(self, e):
  180.         return e['biaya']
  181.  
  182. Aplikasi()
Add Comment
Please, Sign In to add comment