0% found this document useful (0 votes)
7 views6 pages

Entrep

wala

Uploaded by

mitchielou6
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
7 views6 pages

Entrep

wala

Uploaded by

mitchielou6
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 6

import math

import tkinter as tk
from tkinter import messagebox
from tkinter import ttk
from tkinter import scrolledtext
from PIL import Image, ImageTk
from datetime import datetime

def calculate_fare():
try:
distance = float(distance_entry.get())
is_student = student_var.get()
is_senior = senior_var.get()
kilometer = distance / 6
decimal = kilometer - int(kilometer)

if is_student and is_senior:


messagebox.showinfo('Error', 'Invalid: Both Student AND Senior selected')
return

if decimal > 0.5:


kilometer_round = math.ceil(kilometer)
else:
kilometer_round = math.floor(kilometer)

total_fare = kilometer_round * 7

if is_student or is_senior:
total_fare -= 10

fare_label_total.config(text=total_fare)
messagebox.showinfo('Total Fare', f'Your total fare is {total_fare}')

except ValueError:
messagebox.showerror('Error', 'Please enter a valid distance')

def pay():
try:
total_fare = int(fare_label_total.cget('text'))
your_pay = int(pay_entry.get())

if your_pay < total_fare:


messagebox.showinfo('Insufficient Payment', 'Your payment is insufficient')
else:
change = your_pay - total_fare
person = get_person_type()
distance = distance_entry.get()

messagebox.showinfo('Change', f'Your change is {change}')


receipt_tree.insert('', 'end', values=(person, distance, total_fare, change))
reset_fields()

except ValueError:
messagebox.showinfo('Input Error', 'Please input a valid payment amount')

def get_person_type():
if student_var.get():
return 'Student'
elif senior_var.get():
return 'Senior'
else:
return 'Regular'

def reset_fields():
fare_label_total.config(text='0')
pay_entry.delete(0, tk.END)
distance_entry.delete(0, tk.END)
student_var.set(False)
senior_var.set(False)

def clear_receipt():
for item in receipt_tree.get_children():
receipt_tree.delete(item)
reset_fields()

def delete_selected():
selected_item = receipt_tree.selection()
if selected_item:
receipt_tree.delete(selected_item)
else:
messagebox.showinfo('Error', 'No selection made')

def update_selected():
selected_item = receipt_tree.selection()
if selected_item:
total_fare = int(fare_label_total.cget('text'))
person = get_person_type()
distance = distance_entry.get()
pay_amount = pay_entry.get()

receipt_tree.item(selected_item, values=(person, distance, total_fare, pay_amount))


else:
messagebox.showinfo('Error', 'No selection made')

def on_tree_select(event):
selected_item = receipt_tree.selection()
if selected_item:
item = receipt_tree.item(selected_item)
values = item['values']
person, distance, fare, pay = values

distance_entry.delete(0, tk.END)
distance_entry.insert(0, distance)

fare_label_total.config(text=fare)

pay_entry.delete(0, tk.END)
pay_entry.insert(0, pay)

if person == 'Student':
student_var.set(True)
senior_var.set(False)
elif person == 'Senior':
student_var.set(False)
senior_var.set(True)
else:
student_var.set(False)
senior_var.set(False)

def show_receipt():
selected_item = receipt_tree.selection()
if selected_item:
item = receipt_tree.item(selected_item)
values = item['values']
person, distance, fare, change = values

_name = "Fare"
transaction_date = datetime.now().strftime("%Y-%m-%d %H:%M:%S")

# Generate the receipt text


receipt_text = (f"Receipt\n"
f"-------\n"
f"-------\n"
f"{_name}\n"
f"{transaction_date}\n"
f"-------\n"
f"-------\n"
f"Person: {person}\n"
f"Distance: {distance} km\n"
f"Fare: {fare} units\n"
f"Change: {change} units")
receipt_text_widget.delete(1.0, tk.END) # Clear previous text
receipt_text_widget.insert(tk.END, receipt_text) # Insert new receipt text
else:
messagebox.showinfo('Error', 'No selection made')

main_window = tk.Tk()
main_window.title("Fare Discount Calculator")
main_window.geometry('1300x800')

# Load the background image


background_image = Image.open("JAVA PROGRAMMING.png")
background_photo = ImageTk.PhotoImage(background_image)

# Create a canvas to put the background image on


canvas = tk.Canvas(main_window, width=400, height=500)
canvas.pack(fill="both", expand=True)

# Display the background image


canvas.create_image(0, 0, image=background_photo, anchor="nw")

frame = tk.Frame(canvas, bg='lightblue')


frame.pack()

frame_sa_widgets = tk.Frame(frame, bg='lightblue')


frame_sa_widgets.grid(row=0, column=1, columnspan=3, rowspan=7)

frame_sa_receipt = tk.Frame(frame, bg='lightblue')


frame_sa_receipt.grid(row=0, column=4, rowspan=7, columnspan=3, padx=20)

distance_label = tk.Label(frame_sa_widgets, text="Enter distance (km):", background='pink',


font='helvetica')
distance_label.grid(row=0, columnspan=2, pady=(20, 2), padx=10)
distance_entry = tk.Entry(frame_sa_widgets, font='helvetica')
distance_entry.grid(row=1, columnspan=2, pady=(0, 5), padx=10)
student_var = tk.BooleanVar()
student_checkbox = tk.Checkbutton(frame_sa_widgets, text="Student", variable=student_var,
background='pink')
student_checkbox.grid(row=3, columnspan=2, pady=5, sticky='w', padx=10)

senior_var = tk.BooleanVar()
senior_checkbox = tk.Checkbutton(frame_sa_widgets, text="Senior", variable=senior_var,
background='pink')
senior_checkbox.grid(row=3, columnspan=2, pady=5, sticky='e', padx=10)

calculate_button = tk.Button(frame_sa_widgets, text="Submit Fare", command=calculate_fare,


background='pink', font='helvetica')
calculate_button.grid(row=4, columnspan=2)

fare_label = tk.Label(frame_sa_widgets, text="Total Fare", background='pink', font='helvetica')


fare_label.grid(row=5, column=0, pady=(10, 5))
fare_label_total = tk.Label(frame_sa_widgets, text="0", background='lavenderblush',
font='helvetica', width=8)
fare_label_total.grid(row=6, column=0)

pay_label = tk.Label(frame_sa_widgets, text='Pay Here', background='pink', font='helvetica')


pay_label.grid(row=5, column=1, pady=(10, 5))
pay_entry = tk.Entry(frame_sa_widgets, background='lavenderblush', font='helvetica', width=8)
pay_entry.grid(row=6, column=1)

pay_button = tk.Button(frame_sa_widgets, text='Pay', background='lavenderblush',


font='helvetica', command=pay)
pay_button.grid(row=7, columnspan=2, pady=10)

delete_button = tk.Button(frame_sa_widgets, text='Delete Selected',


background='lavenderblush', font='helvetica', command=delete_selected)
delete_button.grid(row=9, columnspan=2, pady=10)

update_button = tk.Button(frame_sa_widgets, text='Update Selected',


background='lavenderblush', font='helvetica', command=update_selected)
update_button.grid(row=10, columnspan=2, pady=10)

# Add Show Receipt button


show_receipt_button = tk.Button(frame_sa_widgets, text='Show Receipt',
background='lavenderblush', font='helvetica', command=show_receipt)
show_receipt_button.grid(row=11, columnspan=2, pady=10)

style = ttk.Style()
style.configure('Treeview.Heading',foreground='blue')
# Treeview Widget for Receipts
receipt_tree = ttk.Treeview(frame_sa_receipt, columns=('Person', 'Distance', 'Fare', 'Change'),
show='headings')
receipt_tree.heading('Person', text='Person')
receipt_tree.heading('Distance', text='Distance')
receipt_tree.heading('Fare', text='Fare')
receipt_tree.heading('Change', text='Change')
receipt_tree.pack(fill='both', expand=True)

# Bind the Treeview selection event to the on_tree_select function


receipt_tree.bind('<<TreeviewSelect>>', on_tree_select)

# Text widget for displaying the receipt


receipt_text_widget = scrolledtext.ScrolledText(frame_sa_receipt, width=50, height=10,
wrap=tk.WORD)
receipt_text_widget.pack(pady=10)

main_window.mainloop()

You might also like