রিমাইন্ডার অ্যাপ্লিকেশন

প্র্যাকটিস প্রোজেক্টস - পাইথন প্রোগ্রামিং (Python Programming) - Computer Programming

303

রিমাইন্ডার অ্যাপ্লিকেশন হলো একটি ছোট টুল, যা ব্যবহারকারীদের নির্দিষ্ট সময়ে কোন কাজ বা ইভেন্টের কথা মনে করিয়ে দেয়। আমরা Python-এর Tkinter এবং datetime লাইব্রেরি ব্যবহার করে একটি রিমাইন্ডার অ্যাপ তৈরি করব, যেখানে ব্যবহারকারী একটি টাস্ক সেট করতে পারবে এবং নির্দিষ্ট সময়ে একটি নোটিফিকেশন দেখানো হবে।


প্রজেক্ট: রিমাইন্ডার অ্যাপ

ফিচারস:

  1. টাস্কের নাম এবং সময় ইনপুট দেয়ার ব্যবস্থা।
  2. নির্দিষ্ট সময়ে টাস্কের জন্য নোটিফিকেশন বা পপ-আপ দেখানো।
  3. একাধিক রিমাইন্ডার যোগ করার সুবিধা।

প্রয়োজনীয় লাইব্রেরি

  • tkinter: GUI তৈরি করতে।
  • datetime: সময় পরিচালনা করতে।
  • threading: টাইমার ফাংশনটি ব্যাকগ্রাউন্ডে চালাতে।

Step 1: Tkinter এবং অন্যান্য মডিউল ইম্পোর্ট করা

import tkinter as tk
from tkinter import messagebox
from datetime import datetime, timedelta
import threading
import time

Step 2: GUI সেটআপ এবং এন্ট্রি ফিল্ড তৈরি

Tkinter দিয়ে GUI তৈরি করে ব্যবহারকারীকে টাস্কের নাম এবং সময় ইনপুট দেয়ার জন্য ফিল্ড তৈরি করা হবে।

# মেইন Tkinter উইন্ডো তৈরি
root = tk.Tk()
root.title("Reminder App")
root.geometry("400x300")

# টাস্কের নামের এন্ট্রি ফিল্ড
tk.Label(root, text="Task Name:").pack(pady=5)
task_entry = tk.Entry(root, width=30, font=("Arial", 14))
task_entry.pack(pady=5)

# সময় ইনপুটের জন্য এন্ট্রি ফিল্ড (HH:MM ফরম্যাট)
tk.Label(root, text="Reminder Time (HH:MM):").pack(pady=5)
time_entry = tk.Entry(root, width=30, font=("Arial", 14))
time_entry.pack(pady=5)

Step 3: রিমাইন্ডার সেট করার ফাংশন

এই ফাংশনটি ব্যবহারকারীর ইনপুট থেকে টাস্ক এবং সময় নেবে এবং একটি থ্রেডে রান করবে, যাতে এটি নির্দিষ্ট সময়ে নোটিফিকেশন দেখায়।

python

Copy code

def set_reminder():
    task = task_entry.get()
    reminder_time = time_entry.get()
    
    if not task or not reminder_time:
        messagebox.showwarning("Warning", "Please enter both task and time!")
        return
    
    try:
        # সময় ফরম্যাট চেক করা
        reminder_datetime = datetime.strptime(reminder_time, "%H:%M").time()
        now = datetime.now()
        reminder_datetime = datetime.combine(now.date(), reminder_datetime)
        
        if reminder_datetime < now:
            reminder_datetime += timedelta(days=1)  # যদি সময় পার হয়ে যায়, তাহলে পরবর্তী দিনের জন্য সেট করা

        time_diff = (reminder_datetime - now).total_seconds()
        
        # ব্যাকগ্রাউন্ড থ্রেডে টাইমার শুরু করা
        threading.Thread(target=start_timer, args=(time_diff, task)).start()
        messagebox.showinfo("Success", f"Reminder set for {task} at {reminder_datetime.strftime('%H:%M')}")
    except ValueError:
        messagebox.showerror("Error", "Please enter time in HH:MM format!")

Step 4: টাইমার ফাংশন তৈরি করা

এই ফাংশনটি নির্দিষ্ট সময়ের জন্য অপেক্ষা করবে এবং সময় শেষ হলে নোটিফিকেশন দেখাবে।

def start_timer(seconds, task):
    time.sleep(seconds)
    messagebox.showinfo("Reminder", f"It's time for: {task}")

Step 5: GUI-তে বাটন যুক্ত করা

Tkinter GUI-তে একটি Set Reminder বাটন যুক্ত করা হবে, যা set_reminder() ফাংশন কল করবে।

# রিমাইন্ডার সেট করার বাটন
set_reminder_button = tk.Button(root, text="Set Reminder", command=set_reminder, font=("Arial", 12))
set_reminder_button.pack(pady=20)

Step 6: Tkinter মেইন লুপ চালানো

root.mainloop()

পূর্ণ কোড একসাথে

import tkinter as tk
from tkinter import messagebox
from datetime import datetime, timedelta
import threading
import time

# মেইন Tkinter উইন্ডো তৈরি
root = tk.Tk()
root.title("Reminder App")
root.geometry("400x300")

# টাস্কের নামের এন্ট্রি ফিল্ড
tk.Label(root, text="Task Name:").pack(pady=5)
task_entry = tk.Entry(root, width=30, font=("Arial", 14))
task_entry.pack(pady=5)

# সময় ইনপুটের জন্য এন্ট্রি ফিল্ড (HH:MM ফরম্যাট)
tk.Label(root, text="Reminder Time (HH:MM):").pack(pady=5)
time_entry = tk.Entry(root, width=30, font=("Arial", 14))
time_entry.pack(pady=5)

# রিমাইন্ডার সেট করার ফাংশন
def set_reminder():
    task = task_entry.get()
    reminder_time = time_entry.get()
    
    if not task or not reminder_time:
        messagebox.showwarning("Warning", "Please enter both task and time!")
        return
    
    try:
        # সময় ফরম্যাট চেক করা
        reminder_datetime = datetime.strptime(reminder_time, "%H:%M").time()
        now = datetime.now()
        reminder_datetime = datetime.combine(now.date(), reminder_datetime)
        
        if reminder_datetime < now:
            reminder_datetime += timedelta(days=1)  # যদি সময় পার হয়ে যায়, তাহলে পরবর্তী দিনের জন্য সেট করা

        time_diff = (reminder_datetime - now).total_seconds()
        
        # ব্যাকগ্রাউন্ড থ্রেডে টাইমার শুরু করা
        threading.Thread(target=start_timer, args=(time_diff, task)).start()
        messagebox.showinfo("Success", f"Reminder set for {task} at {reminder_datetime.strftime('%H:%M')}")
    except ValueError:
        messagebox.showerror("Error", "Please enter time in HH:MM format!")

# টাইমার ফাংশন
def start_timer(seconds, task):
    time.sleep(seconds)
    messagebox.showinfo("Reminder", f"It's time for: {task}")

# রিমাইন্ডার সেট করার বাটন
set_reminder_button = tk.Button(root, text="Set Reminder", command=set_reminder, font=("Arial", 12))
set_reminder_button.pack(pady=20)

root.mainloop()

কোড ব্যাখ্যা

GUI সেটআপ: Tkinter GUI তৈরি করা হয়েছে এবং ব্যবহারকারীর জন্য ইনপুট ফিল্ড এবং বাটন যুক্ত করা হয়েছে।

set_reminder() ফাংশন: এই ফাংশনটি ব্যবহারকারীর টাস্ক এবং সময় ইনপুট নিয়ে তা যাচাই করে। যদি ইনপুট সঠিক হয়, তাহলে একটি থ্রেড চালানো হয় যেখানে start_timer() ফাংশন কল করা হয়।

start_timer() ফাংশন: এটি একটি নির্দিষ্ট সময়ের জন্য অপেক্ষা করে এবং সময় শেষ হলে একটি নোটিফিকেশন বা পপ-আপ দেখায় যাতে টাস্কের কথা মনে করিয়ে দেয়া হয়।

Threading: থ্রেডিং ব্যবহার করা হয়েছে যাতে অ্যাপটি রিমাইন্ডার চলাকালীন ব্লক না হয় এবং ব্যবহারকারী একাধিক রিমাইন্ডার যোগ করতে পারে।


উপসংহার

এই রিমাইন্ডার অ্যাপটি Tkinter এবং Python এর অন্যান্য বিল্ট-ইন মডিউল ব্যবহার করে তৈরি করা হয়েছে। এর মাধ্যমে ব্যবহারকারী নির্দিষ্ট সময়ের জন্য রিমাইন্ডার সেট করতে পারবে এবং সময় হলে একটি নোটিফিকেশন পপ-আপের মাধ্যমে টাস্কের কথা মনে করিয়ে দেবে। চাইলে একে আরও উন্নত করতে অ্যাপটিতে একাধিক রিমাইন্ডার প্রদর্শন, ডাটাবেস সংযুক্তি, এবং একাধিক দিনের জন্য রিমাইন্ডার সেট করার মতো ফিচার যোগ করা যেতে পারে।

Content added By
Promotion

Are you sure to start over?

Loading...