একটি ব্যায়াম ট্র্যাকার অ্যাপ তৈরি করা একটি কার্যকরী প্রোজেক্ট হতে পারে। এই অ্যাপ ব্যবহারকারীদের দৈনিক ব্যায়াম কার্যক্রম ট্র্যাক করতে সাহায্য করবে। Python-এর Tkinter এবং SQLite ডাটাবেস ব্যবহার করে সহজেই একটি ব্যায়াম ট্র্যাকার অ্যাপ তৈরি করা সম্ভব।
প্রজেক্ট: ব্যায়াম ট্র্যাকার অ্যাপ
ফিচারস
- এক্সারসাইজ যোগ করা: প্রতিদিনের ব্যায়াম কার্যক্রম যোগ করার ব্যবস্থা।
- ডাটাবেস সংরক্ষণ: SQLite ডাটাবেসে এক্সারসাইজ তথ্য সংরক্ষণ।
- ডেইলি এক্সারসাইজ দেখানো: প্রতিদিনের ব্যায়ামের তালিকা দেখানো।
- পরিসংখ্যান: মোট সময় বা ক্যালোরি বার্ন ট্র্যাক করা।
প্রয়োজনীয় লাইব্রেরি
- tkinter: GUI তৈরি করতে।
- sqlite3: ডাটাবেস পরিচালনা করতে।
Python-এর SQLite এবং Tkinter লাইব্রেরি ইনস্টলেশনের প্রয়োজন নেই, কারণ এগুলো Python-এর সাথে বিল্ট-ইন আছে।
Step 1: Tkinter এবং SQLite ইম্পোর্ট করা
import tkinter as tk
from tkinter import messagebox
import sqlite3
Step 2: SQLite ডাটাবেস তৈরি করা
SQLite ডাটাবেসে একটি টেবিল তৈরি করা হবে, যেখানে প্রতিটি এক্সারসাইজের নাম, সময় (মিনিটে) এবং ক্যালোরি বার্ন সংরক্ষণ করা হবে।
# ডাটাবেস তৈরি এবং টেবিল সেটআপ
conn = sqlite3.connect("exercise_tracker.db")
cursor = conn.cursor()
cursor.execute("""
CREATE TABLE IF NOT EXISTS exercises (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
duration INTEGER NOT NULL,
calories INTEGER NOT NULL,
date TEXT NOT NULL
)
""")
conn.commit()
Step 3: Tkinter GUI সেটআপ এবং এন্ট্রি ফিল্ড তৈরি
Tkinter GUI তৈরি করে ব্যবহারকারীর এক্সারসাইজের নাম, সময় এবং ক্যালোরি ইনপুট দেয়ার ব্যবস্থা করা হবে।
# মেইন Tkinter উইন্ডো তৈরি
root = tk.Tk()
root.title("Exercise Tracker")
root.geometry("400x400")
# এক্সারসাইজ নামের এন্ট্রি ফিল্ড
tk.Label(root, text="Exercise Name:", font=("Arial", 12)).pack(pady=5)
exercise_name_entry = tk.Entry(root, font=("Arial", 12), width=30)
exercise_name_entry.pack(pady=5)
# সময় এন্ট্রি ফিল্ড (মিনিটে)
tk.Label(root, text="Duration (in minutes):", font=("Arial", 12)).pack(pady=5)
duration_entry = tk.Entry(root, font=("Arial", 12), width=30)
duration_entry.pack(pady=5)
# ক্যালোরি বার্ন এন্ট্রি ফিল্ড
tk.Label(root, text="Calories Burned:", font=("Arial", 12)).pack(pady=5)
calories_entry = tk.Entry(root, font=("Arial", 12), width=30)
calories_entry.pack(pady=5)
Step 4: এক্সারসাইজ যোগ করার ফাংশন তৈরি
এই ফাংশনটি ব্যবহারকারীর ইনপুট তথ্য নিয়ে ডাটাবেসে সংরক্ষণ করবে।
from datetime import datetime
def add_exercise():
name = exercise_name_entry.get()
duration = duration_entry.get()
calories = calories_entry.get()
date = datetime.now().strftime("%Y-%m-%d")
if name and duration.isdigit() and calories.isdigit():
cursor.execute("INSERT INTO exercises (name, duration, calories, date) VALUES (?, ?, ?, ?)", (name, int(duration), int(calories), date))
conn.commit()
messagebox.showinfo("Success", "Exercise added successfully!")
clear_entries()
display_exercises()
else:
messagebox.showwarning("Warning", "Please enter valid details.")
Step 5: এন্ট্রি ফিল্ড ক্লিয়ার করার ফাংশন
def clear_entries():
exercise_name_entry.delete(0, tk.END)
duration_entry.delete(0, tk.END)
calories_entry.delete(0, tk.END)
Step 6: এক্সারসাইজ প্রদর্শন ফাংশন
এই ফাংশনটি সমস্ত এক্সারসাইজ ডাটাবেস থেকে ফেচ করবে এবং GUI-তে দেখাবে।
def display_exercises():
exercise_listbox.delete(0, tk.END)
cursor.execute("SELECT name, duration, calories, date FROM exercises")
for row in cursor.fetchall():
exercise_listbox.insert(tk.END, f"{row[3]}: {row[0]} - {row[1]} mins, {row[2]} cal")
Step 7: Tkinter GUI উইজেট এবং বাটন তৈরি
# এক্সারসাইজ যোগ করার বাটন
add_button = tk.Button(root, text="Add Exercise", command=add_exercise, font=("Arial", 12))
add_button.pack(pady=10)
# এক্সারসাইজ লিস্ট দেখানোর জন্য লিস্টবক্স
exercise_listbox = tk.Listbox(root, width=50, height=10, font=("Arial", 10))
exercise_listbox.pack(pady=10)
display_exercises() # প্রাথমিকভাবে ডাটাবেসের এক্সারসাইজ লোড করা
Step 8: Tkinter মেইন লুপ চালানো
root.mainloop()
conn.close()
পূর্ণ কোড একসাথে
import tkinter as tk
from tkinter import messagebox
import sqlite3
from datetime import datetime
# ডাটাবেস তৈরি এবং টেবিল সেটআপ
conn = sqlite3.connect("exercise_tracker.db")
cursor = conn.cursor()
cursor.execute("""
CREATE TABLE IF NOT EXISTS exercises (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
duration INTEGER NOT NULL,
calories INTEGER NOT NULL,
date TEXT NOT NULL
)
""")
conn.commit()
# মেইন Tkinter উইন্ডো তৈরি
root = tk.Tk()
root.title("Exercise Tracker")
root.geometry("400x400")
# এক্সারসাইজ নামের এন্ট্রি ফিল্ড
tk.Label(root, text="Exercise Name:", font=("Arial", 12)).pack(pady=5)
exercise_name_entry = tk.Entry(root, font=("Arial", 12), width=30)
exercise_name_entry.pack(pady=5)
# সময় এন্ট্রি ফিল্ড (মিনিটে)
tk.Label(root, text="Duration (in minutes):", font=("Arial", 12)).pack(pady=5)
duration_entry = tk.Entry(root, font=("Arial", 12), width=30)
duration_entry.pack(pady=5)
# ক্যালোরি বার্ন এন্ট্রি ফিল্ড
tk.Label(root, text="Calories Burned:", font=("Arial", 12)).pack(pady=5)
calories_entry = tk.Entry(root, font=("Arial", 12), width=30)
calories_entry.pack(pady=5)
# এক্সারসাইজ যোগ করার ফাংশন
def add_exercise():
name = exercise_name_entry.get()
duration = duration_entry.get()
calories = calories_entry.get()
date = datetime.now().strftime("%Y-%m-%d")
if name and duration.isdigit() and calories.isdigit():
cursor.execute("INSERT INTO exercises (name, duration, calories, date) VALUES (?, ?, ?, ?)", (name, int(duration), int(calories), date))
conn.commit()
messagebox.showinfo("Success", "Exercise added successfully!")
clear_entries()
display_exercises()
else:
messagebox.showwarning("Warning", "Please enter valid details.")
# এন্ট্রি ফিল্ড ক্লিয়ার করার ফাংশন
def clear_entries():
exercise_name_entry.delete(0, tk.END)
duration_entry.delete(0, tk.END)
calories_entry.delete(0, tk.END)
# এক্সারসাইজ প্রদর্শন ফাংশন
def display_exercises():
exercise_listbox.delete(0, tk.END)
cursor.execute("SELECT name, duration, calories, date FROM exercises")
for row in cursor.fetchall():
exercise_listbox.insert(tk.END, f"{row[3]}: {row[0]} - {row[1]} mins, {row[2]} cal")
# এক্সারসাইজ যোগ করার বাটন
add_button = tk.Button(root, text="Add Exercise", command=add_exercise, font=("Arial", 12))
add_button.pack(pady=10)
# এক্সারসাইজ লিস্ট দেখানোর জন্য লিস্টবক্স
exercise_listbox = tk.Listbox(root, width=50, height=10, font=("Arial", 10))
exercise_listbox.pack(pady=10)
display_exercises() # প্রাথমিকভাবে ডাটাবেসের এক্সারসাইজ লোড করা
root.mainloop()
conn.close()
কোড ব্যাখ্যা
SQLite Database: exercise_tracker.db নামে একটি SQLite ডাটাবেস তৈরি করা হয়েছে এবং exercises টেবিল তৈরি করা হয়েছে, যেখানে প্রতিটি এক্সারসাইজের নাম, সময়, ক্যালোরি এবং তারিখ সংরক্ষণ করা হয়।
Tkinter GUI: Tkinter GUI তৈরি করা হয়েছে, যাতে ব্যবহারকারীরা এক্সারসাইজের নাম, সময় (মিনিটে) এবং ক্যালোরি ইনপুট দিতে পারেন।
add_exercise() Function: ইনপুট ফিল্ড থেকে ডেটা নিয়ে তা ডাটাবেসে সংরক্ষণ করে এবং GUI-তে প্রদর্শন করে।
display_exercises() Function: ডাটাবেস থেকে সমস্ত এক্সারসাইজের তথ্য সংগ্রহ করে GUI-তে প্রদর্শন করে।
উপসংহার
এই ব্যায়াম ট্র্যাকার অ্যাপটি দৈনন্দিন ব্যায়ামের কার্যক্রম ট্র্যাক করতে একটি কার্যকরী টুল। SQLite ডাটাবেস ব্যবহার করে সকল তথ্য সংরক্ষণ করা সম্ভব এবং চাইলে এর সাথে আরো ফিচার যেমন, মোট ক্যালোরি বার্ন বা মাসিক রিপোর্ট যোগ করা যায়।
Read more