
طريقة برمجة تطبيق لتتبع السعرات الحرارية باستخدام Python
يُعد تتبع السعرات الحرارية أداة أساسية لإدارة الوزن والحفاظ على نمط حياة صحي.
في هذا المقال، سنستعرض خطوات برمجة تطبيق بسيط لتتبع السعرات الحرارية باستخدام لغة Python .
مع ازدياد الوعي بالصحة والتغذية، أصبحت تطبيقات تتبع السعرات الحرارية من أهم
الأدوات التي تساعد الأشخاص على التحكم في نظامهم الغذائي. في هذا المقال،
سنقوم بـ برمجة تطبيق تتبع السعرات الحرارية باستخدام بايثون Python خطوة بخطوة،
وسنستخدم مكتبات مثل Tkinter لواجهة المستخدم، وSQLite لحفظ البيانات.
خطوات برمجة تطبيق تتبع السعرات الحرارية باستخدام Python
import tkinter as tk
from tkinter import messagebox, ttk
import sqlite3
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from datetime import datetime
# --- إنشاء قاعدة البيانات ---
def init_db():
conn = sqlite3.connect("calories.db")
cursor = conn.cursor()
cursor.execute("""
CREATE TABLE IF NOT EXISTS meals (
id INTEGER PRIMARY KEY AUTOINCREMENT,
meal TEXT NOT NULL,
calories INTEGER NOT NULL,
date TEXT NOT NULL
)
""")
conn.commit()
conn.close()
# --- إضافة وجبة ---
def add_meal():
meal = meal_entry.get()
calories = cal_entry.get()
date = datetime.now().strftime("%Y-%m-%d")
if not meal or not calories:
messagebox.showerror("خطأ", "يرجى إدخال جميع الحقول.")
return
try:
calories = int(calories)
except ValueError:
messagebox.showerror("خطأ", "عدد السعرات يجب أن يكون رقمًا.")
return
conn = sqlite3.connect("calories.db")
cursor = conn.cursor()
cursor.execute("INSERT INTO meals (meal, calories, date) VALUES (?, ?, ?)", (meal, calories, date))
conn.commit()
conn.close()
meal_entry.delete(0, tk.END)
cal_entry.delete(0, tk.END)
messagebox.showinfo("تم", "تمت إضافة الوجبة بنجاح!")
show_meals()
# --- حذف وجبة ---
def delete_meal():
selected_item = tree.selection()
if not selected_item:
messagebox.showerror("خطأ", "يرجى تحديد وجبة لحذفها.")
return
meal_id = tree.item(selected_item, 'values')[0]
conn = sqlite3.connect("calories.db")
cursor = conn.cursor()
cursor.execute("DELETE FROM meals WHERE id = ?", (meal_id,))
conn.commit()
conn.close()
messagebox.showinfo("تم", "تم حذف الوجبة بنجاح!")
show_meals()
--
عرض سجل السعرات الحرارية *
# --- عرض سجل السعرات الحرارية ---def show_meals(): for item in tree.get_children(): tree.delete(item)
conn = sqlite3.connect("calories.db") cursor = conn.cursor() cursor.execute("SELECT id, meal, calories, date FROM meals ORDER BY date DESC") meals = cursor.fetchall() conn.close()
total_calories = 0 for id, meal, cal, date in meals: tree.insert("", tk.END, values=(id, meal, cal, date)) total_calories += cal total_calories_label.config(text=f"مجموع السعرات الحرارية: {total_calories}")
# --- عرض رسم بياني للسعرات حسب التاريخ ---def show_chart(): conn = sqlite3.connect("calories.db") cursor = conn.cursor() cursor.execute("SELECT date, SUM(calories) FROM meals GROUP BY date ORDER BY date") data = cursor.fetchall() conn.close()
if data: dates = [row[0] for row in data] calories = [row[1] for row in data]
plt.figure(figsize=(10, 5)) plt.plot(dates, calories, marker='o', linestyle='-', color='green') plt.xlabel('التاريخ') plt.ylabel('إجمالي السعرات الحرارية') plt.title('السعرات الحرارية اليومية') plt.xticks(rotation=45) plt.tight_layout()
chart_window = tk.Toplevel(root) chart_window.title("رسم بياني للسعرات الحرارية") canvas = FigureCanvasTkAgg(plt.gcf(), master=chart_window) canvas_widget = canvas.get_tk_widget() canvas_widget.pack() else: messagebox.showinfo("معلومة", "لا توجد بيانات لعرض الرسم البياني.")
# --- واجهة المستخدم ---root = tk.Tk()root.title("🥗 تطبيق تتبع السعرات الحرارية")root.geometry("500x600")root.resizable(False, False)
# عنوان التطبيقtitle_label = tk.Label(root, text="تطبيق تتبع السعرات الحرارية", font=("Arial", 16, "bold"))title_label.pack(pady=10)
# إدخال اسم الوجبةmeal_label = tk.Label(root, text="اسم الوجبة:")meal_label.pack()meal_entry = tk.Entry(root, width=30)meal_entry.pack(pady=5)
# إدخال عدد السعراتcal_label = tk.Label(root, text="عدد السعرات:")cal_label.pack()cal_entry = tk.Entry(root, width=30)cal_entry.pack(pady=5)
# زر إضافة الوجبةadd_button = tk.Button(root, text="➕ إضافة الوجبة", command=add_meal, bg="#4CAF50", fg="white", width=20)add_button.pack(pady=10)
# عرض سجل الوجبات في جدولtree = ttk.Treeview(root, columns=("ID", "الوجبة", "السعرات", "التاريخ"), show='headings')tree.heading("ID", text="ID")tree.heading("الوجبة", text="الوجبة")tree.heading("السعرات", text="السعرات")tree.heading("التاريخ", text="التاريخ")tree.column("ID", width=30)tree.column("الوجبة", width=150)tree.column("السعرات", width=80)tree.column("التاريخ", width=100)tree.pack(pady=10)
# زر حذف الوجبةdelete_button = tk.Button(root, text="🗑️ حذف الوجبة", command=delete_meal, bg="#f44336", fg="white", width=20)delete_button.pack(pady=5)
# زر عرض الرسم البيانيchart_button = tk.Button(root, text="عرض الرسم البياني", command=show_chart, bg="#2196F3", fg="white", width=20)chart_button.pack(pady=10)
# عرض مجموع السعرات الحراريةtotal_calories_label = tk.Label(root, text="مجموع السعرات الحرارية: 0", font=("Arial", 12, "bold"))total_calories_label.pack(pady=10)
# --- تشغيل التطبيق ---init_db()show_meals()root.mainloop()
* الخاتمة :
"في هذا المقال، قمنا ببرمجة تطبيق بسيط لتتبع السعرات الحرارية باستخدام لغة Python.
يمكن توسيع هذا التطبيق ليشمل ميزات أكثر تقدمًا مثل حفظ البيانات في ملف،
وقراءة البيانات من ملف، وإنشاء تقارير، وربما حتى تطوير واجهة مستخدم رسومية
(GUI) باستخدام مكتبات مثل Tkinter أو PyQt. تذكر أن Python
توفر أدوات قوية لإنشاء تطبيقات عملية ومفيدة.