Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from tkinter import *
- from tkinter import ttk, messagebox
- from datetime import datetime
- class Aplikasi():
- def __init__(self):
- self.root = Tk()
- self.datas = []
- self.root.title("Tugas Besar 1 | Kelompok 5 | Aplikasi Parkir")
- self.root.geometry("680x400")
- self.root.resizable(width=False, height=False)
- self.root.configure(background='gray13')
- self.batas()
- self.root.mainloop()
- def batas(self):
- #judul aplikasi
- Label(self.root, text="Aplikasi Parkir Kelompok 5", font=('Adobe Gothic Std B', 25), bg='gray13', fg='snow').place(x = 15,y = 10)
- #pencarian aplikasi
- Label(self.root, text="Cari NoPol", font=('Segoe UI Black', 10), bg='gray13', fg='snow').place(x=17, y=60)
- self.nopol = StringVar()
- Entry(self.root, textvariable=self.nopol, width=16).place(x=95, y=62)
- Button(self.root, text="Cari", font=('Segoe UI Black', 7), width=6, height=1, bg='coral1', command=self.searchData).place(x=200, y=62)
- #biaya perjam
- Label(self.root, text="Biaya Per Jam", font=('Segoe UI Black', 17), fg="red", bg='gray13').place(x=370, y=76)
- Label(self.root, text="Rp. 2.000", font=('Segoe UI Black', 40), fg="red", bg='gray13').place(x=370, y=105)
- #----------awal form------------
- #noplat
- Label(self.root, text="No Plat Polisi", font=('Segoe UI Black', 10), bg='gray13', fg='snow').place(x=17, y=100)
- self.noplat = StringVar()
- Entry(self.root, textvariable=self.noplat).place(x=110, y=102)
- #waktu masuk
- Label(self.root, text="Waktu Masuk", font=('Segoe UI Black', 10), bg='gray13', fg='snow').place(x=17, y=130)
- self.masuk = StringVar()
- Entry(self.root, textvariable=self.masuk).place(x=110, y=132)
- self.masuk.trace("w", self.updateMasuk)
- #waktu keluar
- Label(self.root, text="Waktu Keluar", font=('Segoe UI Black', 10), bg='gray13', fg='snow').place(x=17, y=160)
- self.keluar = StringVar()
- Entry(self.root, textvariable=self.keluar).place(x=110, y=162)
- self.keluar.trace("w", self.updateKeluar)
- #biaya
- Label(self.root, text="Biaya", font=('Segoe UI Black', 10), bg='gray13', fg='snow').place(x=17, y=190)
- self.biaya = IntVar()
- Entry(self.root, textvariable=self.biaya, fg='snow', state=DISABLED).place(x=110, y=192)
- #tombolinput
- Button(self.root, text="Button", font=('Segoe UI Black', 7), width=6, height=1, bg='steelblue1', command=self.insertDataTreeview1).place(x=240, y=192)
- #----------akhir form------------
- #judul list
- Label(self.root, text="List Pelanggan Urut Terakhir Keluar", font=('Segoe UI Black', 10), bg='gray13', fg='snow').place(x=17, y=240)
- Label(self.root, text="List Pelanggan Banyak Bayar", font=('Segoe UI Black', 10), bg='gray13', fg='snow').place(x=347, y=240)
- self.DataTreeview1()
- self.DataTreeview2()
- def DataTreeview1(self):
- self.treev = ttk.Treeview(selectmode ='browse', height=3)
- self.treev.place(x=19,y=270)
- verscrlbar = ttk.Scrollbar(
- self.root,
- orient ="vertical",
- command = self.treev.yview,
- )
- verscrlbar.place(x=312, y=271, height=85)
- self.treev.config(yscrollcommand = verscrlbar.set)
- self.treev["columns"] = ("1", "2", "3", "4")
- self.treev['show'] = 'headings'
- self.treev.column("1", width = 80, anchor ='c')
- self.treev.column("2", width = 70, anchor ='se')
- self.treev.column("3", width = 70, anchor ='se')
- self.treev.column("4", width = 70, anchor ='se')
- self.treev.heading("1", text ="No Plat Polisi")
- self.treev.heading("2", text ="Masuk")
- self.treev.heading("3", text ="Keluar")
- self.treev.heading("4", text ="Biaya")
- def DataTreeview2(self):
- self.treev2 = ttk.Treeview(selectmode ='browse', height=3)
- self.treev2.place(x=350,y=270)
- verscrlbar = ttk.Scrollbar(
- self.root,
- orient ="vertical",
- command = self.treev2.yview
- )
- verscrlbar.place(x=643, y=271, height=85)
- self.treev2.config(yscrollcommand = verscrlbar.set)
- self.treev2["columns"] = ("1", "2", "3", "4")
- self.treev2['show'] = 'headings'
- self.treev2.column("1", width = 80, anchor ='c')
- self.treev2.column("2", width = 70, anchor ='se')
- self.treev2.column("3", width = 70, anchor ='se')
- self.treev2.column("4", width = 70, anchor ='se')
- self.treev2.heading("1", text ="No Plat Polisi")
- self.treev2.heading("2", text ="Masuk")
- self.treev2.heading("3", text ="Keluar")
- self.treev2.heading("4", text ="Biaya")
- def insertDataTreeview1(self):
- self.datas.append(
- {
- 'noplat': str(self.noplat.get()),
- 'masuk': str(self.masuk.get()),
- 'keluar': str(self.keluar.get()),
- 'biaya': self.biaya.get()
- }
- )
- self.treev.insert("", 0,
- values = (str(self.noplat.get()), str(self.masuk.get()), str(self.keluar.get()), self.biaya.get()))
- self.clearDataTreeview2()
- self.insertDataTreeview2()
- def insertDataTreeview2(self):
- self.datas.sort(key=self.bSort)
- for x in self.datas:
- self.treev2.insert("", 0,
- values = (x['noplat'], x['masuk'], x['keluar'], x['biaya']))
- def clearDataTreeview2(self):
- try:
- for i in self.treev2.get_children():
- self.treev2.delete(i)
- except:
- print("error")
- def searchData(self):
- found = 0
- text = ""
- for z in self.datas:
- if str(z['noplat']).lower().strip() == str(self.nopol.get()).lower().strip():
- text += "No. {} | No Plat : {}, Jam Masuk : {}, Jam Keluar : {}, Biaya : Rp. {}.".format(str(found + 1),
- str(z['noplat']),
- str(z['masuk']),
- str(z['keluar']),
- str(z['biaya']))+"\n"
- found += 1
- if found > 0:
- messagebox.showinfo("Hasil Pencarian : "+str(self.nopol.get()), message=text)
- else:
- messagebox.showerror("Tidak ditemukan", "Hasil pencarian : {} tidak ditemukan.".format(str(self.nopol.get())))
- def updateMasuk(self, *args):
- if(len(str(self.masuk.get()))) >= 8:
- if len(str(self.keluar.get())) >= 8:
- biaya = self.hitungAplikasi(self.masuk.get(), self.keluar.get())
- self.biaya.set(biaya)
- print(biaya)
- else:
- self.biaya.set('0')
- def updateKeluar(self, *args):
- if(len(str(self.keluar.get()))) >= 8:
- if len(str(self.masuk.get())) >= 8:
- biaya = self.hitungAplikasi(self.masuk.get(), self.keluar.get())
- self.biaya.set(biaya)
- print(biaya)
- else:
- self.biaya.set('0')
- def hitungAplikasi(self, masuk, keluar):
- jam_masuk = str(masuk)
- masukin = datetime.strptime(jam_masuk, "%H:%M:%S")
- jam_keluar = str(keluar)
- keluarin = datetime.strptime(jam_keluar, "%H:%M:%S")
- get_hour = (datetime.strptime(jam_keluar, "%H:%M:%S") - datetime.strptime(jam_masuk, "%H:%M:%S")).seconds//3600
- if((keluarin.minute - masukin.minute)>30):
- get_hour = get_hour+1
- return get_hour * 2000 if get_hour > 0 else 2000
- def bSort(self, e):
- return e['biaya']
- Aplikasi()
Add Comment
Please, Sign In to add comment