پروژه‌های عملی در پایتون (بخش اول)

ایجاد شده توسط دکتر مصطفی جلیلی در آموزش برنامه نویسی پایتون 25 مارس 2025
اشتراک گذاری

پروژه عملی پایتون: ساخت اپلیکیشن دسکتاپ مدیریت وظایف با Tkinter


در این پروژه آموزشی، گام‌به‌گام با هم یک اپلیکیشن دسکتاپ (GUI) با زبان Python و کتابخانه Tkinter طراحی می‌کنیم. هدف اصلی این پروژه، آموزش کاربردی طراحی رابط کاربری گرافیکی در پایتون و آشنایی با مفاهیم مدیریت وظایف، تعامل با کاربر، ذخیره‌سازی اطلاعات و ساخت یک برنامه واقعی است.




پیش‌نیازها:




  • آشنایی با مبانی زبان پایتون (توابع، لیست‌ها، شرط‌ها و حلقه‌ها)




  • آشنایی مقدماتی با Tkinter (اختیاری ولی مفید)





🔧 نکته: نیازی به نصب Tkinter نیست چون به‌صورت پیش‌فرض با پایتون همراه است.





هدف نهایی پروژه


ساخت یک اپلیکیشن To-Do List که امکانات زیر را داشته باشد:




  • اضافه کردن وظایف




  • نمایش لیست وظایف




  • حذف وظایف




  • ذخیره وظایف در فایل




  • بارگذاری وظایف از فایل




  • رابط کاربری تمیز و حرفه‌ای






 گام اول: طراحی ساختار پروژه


برای اینکه کد ما حرفه‌ای، منظم و قابل توسعه باشد، از کلاس‌نویسی در پایتون استفاده می‌کنیم.


project/

├── todo_app.py # فایل اصلی برنامه
├── tasks.txt # فایل ذخیره‌سازی وظایف
└── assets/ # (اختیاری) پوشه آیکون یا منابع گرافیکی



 کدنویسی: فایل todo_app.py


1. وارد کردن کتابخانه‌ها و آماده‌سازی


import tkinter as tk
from tkinter import messagebox, filedialog
import os



2. ساخت کلاس اصلی برنامه


class ToDoApp:
def __init__(self, root):
self.root = root
self.root.title("اپلیکیشن مدیریت وظایف")
self.root.geometry("500x500")
self.root.resizable(False, False)
self.tasks = []
self.create_widgets()
self.load_tasks()



3. ساخت رابط کاربری


def create_widgets(self):
self.entry = tk.Entry(self.root, font=("Arial", 14), width=30)
self.entry.pack(pady=20)
btn_frame = tk.Frame(self.root)
btn_frame.pack()
self.add_btn = tk.Button(btn_frame, text="افزودن", command=self.add_task, width=10)
self.add_btn.grid(row=0, column=0, padx=5)
self.delete_btn = tk.Button(btn_frame, text="حذف", command=self.delete_task, width=10)
self.delete_btn.grid(row=0, column=1, padx=5)
self.save_btn = tk.Button(btn_frame, text="ذخیره", command=self.save_tasks, width=10)
self.save_btn.grid(row=0, column=2, padx=5)
self.listbox = tk.Listbox(self.root, font=("Arial", 12), width=45, height=15)
self.listbox.pack(pady=10)



4. توابع منطق برنامه


def add_task(self):
task = self.entry.get().strip()
if task:
self.tasks.append(task)
self.update_listbox()
self.entry.delete(0, tk.END)
else:
messagebox.showwarning("هشدار", "لطفاً یک وظیفه وارد کنید!")
def delete_task(self):
selected = self.listbox.curselection()
if selected:
index = selected[0]
self.tasks.pop(index)
self.update_listbox()
else:
messagebox.showwarning("هشدار", "هیچ وظیفه‌ای انتخاب نشده!")
def update_listbox(self):
self.listbox.delete(0, tk.END)
for i, task in enumerate(self.tasks, start=1):
self.listbox.insert(tk.END, f"{i}. {task}")
def save_tasks(self):
with open("tasks.txt", "w", encoding="utf-8") as file:
for task in self.tasks:
file.write(task + "\n")
messagebox.showinfo("ذخیره شد", "وظایف با موفقیت ذخیره شدند.")
def load_tasks(self):
if os.path.exists("tasks.txt"):
with open("tasks.txt", "r", encoding="utf-8") as file:
self.tasks = [line.strip() for line in file.readlines()]
self.update_listbox()



5. اجرای برنامه


if __name__ == "__main__":
root = tk.Tk()
app = ToDoApp(root)
root.mainloop()



نتیجه‌گیری


این پروژه نه‌تنها به شما کمک می‌کنه مفاهیم GUI در پایتون رو یاد بگیرید، بلکه با ساخت یک برنامه واقعی، احساس فوق‌العاده‌ای از خلق نرم‌افزار خواهید داشت.



نظرات (0)

اشتراک گذاری

این پست را با دیگران به اشتراک بگذارید

تنظیمات GDPR

When you visit any of our websites, it may store or retrieve information on your browser, mostly in the form of cookies. This information might be about you, your preferences or your device and is mostly used to make the site work as you expect it to. The information does not usually directly identify you, but it can give you a more personalized web experience. Because we respect your right to privacy, you can choose not to allow some types of cookies. Click on the different category headings to find out more and manage your preferences. Please note, that blocking some types of cookies may impact your experience of the site and the services we are able to offer.