12/12/2025
✅ أبسط كود Python لصنع برنامج فواتير (Invoice App)
📌 إذا كنت حاب تتعلم البرمجة ولا تخدم مشاريع صغيرة، هذا مثال عملي تقدر تبدا بيه اليوم.
🔹 الكود يخليك:
تضيف منتوج + كمية + سعر
يحسب المجموع تلقائياً
يسجّلك الفاتورة في ملف
واجهة بسيطة بـ Tkinter
🔹 مناسب للطلبة، التجار، ولا أي واحد يحب يتعلم Python بطريقة تطبيقية
import tkinter as tk
from tkinter import messagebox
items = [] # List of products
def add_item():
name = entry_name.get()
qty = entry_qty.get()
price = entry_price.get()
if not (name and qty.isdigit() and price.replace('.', '', 1).isdigit()):
messagebox.showerror("Error", "Please enter valid data!")
return
qty = int(qty)
price = float(price)
total = qty * price
items.append((name, qty, price, total))
listbox.insert(tk.END, f"{name} - Qty {qty} - Price {price} DA - Total {total} DA")
entry_name.delete(0, tk.END)
entry_qty.delete(0, tk.END)
entry_price.delete(0, tk.END)
def calculate_total():
total_price = sum([item[3] for item in items])
messagebox.showinfo("Total Amount", f"The total is: {total_price} DA")
def save_invoice():
if not items:
messagebox.showerror("Error", "No items to save!")
return
with open("invoice.txt", "w", encoding="utf-8") as f:
f.write("=== Invoice ===\n\n")
for item in items:
f.write(f"{item[0]} - Qty {item[1]} - Price {item[2]} DA - Total {item[3]} DA\n")
f.write("\n----------------------\n")
f.write(f"Total Amount: {sum([item[3] for item in items])} DA\n")
messagebox.showinfo("Saved", "Invoice saved as invoice.txt")
# Window settings
root = tk.Tk()
root.title("Invoice App")
root.geometry("450x500")
# Input fields
tk.Label(root, text="Product Name:").pack()
entry_name = tk.Entry(root)
entry_name.pack()
tk.Label(root, text="Quantity:").pack()
entry_qty = tk.Entry(root)
entry_qty.pack()
tk.Label(root, text="Price:").pack()
entry_price = tk.Entry(root)
entry_price.pack()
# Buttons
tk.Button(root, text="Add Item", command=add_item).pack(pady=5)
tk.Button(root, text="Calculate Total", command=calculate_total).pack(pady=5)
tk.Button(root, text="Save Invoice", command=save_invoice).pack(pady=5)
# Item list display
listbox = tk.Listbox(root, width=60, height=15)
listbox.pack(pady=10)
root.mainloop()