آموزش ساخت To Do List با پایتون + Tkinter و SQLite
آموزش ساخت To Do List با پایتون Tkinter + SQLite — سورس کامل قابل کپی
دنبال یک پروژه پایتون کاربردی هستی که هم برای نمونه سوال عملی فنی و حرفهای مناسب باشه و هم بتونی توی رزومهت بذاری؟ این مقاله دقیقاً همون چیزیه که لازم داری. با هم قدمبهقدم یک برنامه To Do List کامل با Python، Tkinter و SQLite3 میسازیم. سورس کد کامل و قابل کپی آمادهست.
پروژه To Do List با پایتون (Tkinter + SQLite) یکی از رایجترین نمونه سوالات عملی فنی و حرفهای در رشته برنامهنویسی است. این پروژه ترکیبی از رابط گرافیکی (GUI)، دیتابیس محلی (SQLite) و عملیات CRUD را آموزش میدهد.
پروژه To Do List با پایتون — از صفر تا اجرا
پایتون (Python) امروز یکی از محبوبترین زبانهای برنامهنویسی دنیاست. از هوش مصنوعی و تحلیل داده تا طراحی نرمافزارهای دسکتاپ، همه جا پای پایتون در میونه. یکی از بهترین راهها برای یادگیری پایتون، ساختن پروژههای واقعی است — نه فقط حل تمرینهای تئوری.
در این مقاله، با هم یک برنامه To Do List (لیست کارها) میسازیم که:
- ✅ با Tkinter رابط گرافیکی داره
- ✅ با SQLite اطلاعات رو ذخیره میکنه
- ✅ میتونه کار اضافه کنه، حذف کنه، وضعیتش رو تغییر بده
- ✅ فیلتر «انجام شده / انجام نشده» داره
- ✅ کامنتگذاری شده و برای امتحان عملی مناسبه
چرا پروژه To Do List برای فنی و حرفهای و رزومه حیاتیه؟
نمونه سوال عملی
این پروژه یکی از پرتکرارترین سوالات آزمون عملی پایتون در آموزشگاههای فنی و حرفهای تبریز و سراسر کشوره.
ترکیب Tkinter + SQLite
یاد میگیری چطور یک برنامه دسکتاپ واقعی بسازی که اطلاعات رو توی دیتابیس ذخیره کنه و بعداً بازخونی کنه.
مناسب رزومه
این پروژه رو میتونی توی گیتهاب بذاری و بهعنوان نمونه کار برای استخدام معرفی کنی. کارفرماها عاشق پروژههای عملیان.
ابزارهای موردنیاز برای اجرای پروژه
Python 3.x
نسخه ۳.۷ به بالا. از سایت python.org دانلودش کن.
Tkinter
بهصورت پیشفرض همراه پایتون نصب میشه. نیازی به نصب جداگانه نیست.
SQLite3
ماژول sqlite3 هم بهصورت داخلی در پایتون وجود داره.
یک ادیتور
VS Code، PyCharm یا حتی IDLE خود پایتون کافیه.
خروجی نهایی برنامه To Do List
برنامهای که در انتهای این مقاله میسازی، دقیقاً به این شکل کار میکنه:
📸 خروجی برنامه To Do List — ساختهشده با Python + Tkinter + SQLite
همونطور که میبینی، برنامه شامل این بخشهاست:
- 📅 فیلد تاریخ برای ثبت زمان کار
- 📝 فیلد عنوان کار برای توضیح تسک
- 📋 لیستباکس برای نمایش همه کارها
- 🔽 کمبوباکس فیلتر (همه / انجام شده / انجام نشده)
- ➕ دکمه افزودن
- 🗑️ دکمه حذف
- ✅ دکمه تغییر وضعیت
- 🚪 دکمه خروج
سورس کد کامل پروژه To Do List (قابل کپی)
کد زیر رو کامل کپی کن، توی یک فایل با پسوند
todo.py
ذخیره کن و اجراش کن. همه چیز آمادهست!
from tkinter import *
from tkinter import messagebox
from tkinter import ttk
import sqlite3
# اتصال به دیتابیس (اگر وجود نداشته باشد ساخته میشود)
conn = sqlite3.connect('todo.db')
curs = conn.cursor()
# ساخت جدول در صورت عدم وجود
curs.execute('''CREATE TABLE IF NOT EXISTS todolist (
id INTEGER PRIMARY KEY AUTOINCREMENT,
tarikh TEXT,
onvan TEXT,
vazyat TEXT
)''')
conn.commit()
# تابع افزودن کار جدید
def add_task():
t = e1.get()
o = e2.get()
if t == '' or o == '':
messagebox.showwarning('توجه', 'لطفا تاریخ و عنوان کار را وارد کنید')
return
curs.execute('INSERT INTO todolist (tarikh, onvan, vazyat) VALUES (?, ?, ?)',
(t, o, '❌'))
conn.commit()
e1.delete(0, END)
e2.delete(0, END)
e1.focus_set()
show()
# تابع نمایش لیست کارها با فیلتر
def show():
la1.delete(0, END)
selected_filter = combo_filter.get()
if selected_filter == 'نمایش همه':
curs.execute('SELECT * FROM todolist')
elif selected_filter == 'انجام شده':
curs.execute('SELECT * FROM todolist WHERE vazyat = "✔"')
elif selected_filter == 'انجام نشده':
curs.execute('SELECT * FROM todolist WHERE vazyat = "❌"')
else:
curs.execute('SELECT * FROM todolist')
info = curs.fetchall()
for i in info:
la1.insert(END, i)
# تابع انتخاب آیتم از لیست
def onselect(event):
satrno = la1.curselection()
if satrno:
matn = la1.get(satrno)
e1.delete(0, END)
e2.delete(0, END)
e1.insert(0, matn[1])
e2.insert(0, matn[2])
global kod, vaz
kod = matn[0]
vaz = matn[3]
# تابع تغییر وضعیت کار
def change():
if 'kod' in globals() and 'vaz' in globals():
if vaz == '❌':
curs.execute(f'UPDATE todolist SET vazyat = "✔" WHERE id = {kod}')
else:
curs.execute(f'UPDATE todolist SET vazyat = "❌" WHERE id = {kod}')
conn.commit()
show()
else:
messagebox.showwarning('توجه', 'لطفا ابتدا یک مورد را انتخاب کنید')
# تابع حذف کار
def hazf():
if 'kod' in globals():
javab = messagebox.askyesno('توجه', 'آیا مطمئن هستید حذف شود؟')
if javab:
curs.execute(f'DELETE FROM todolist WHERE id = {kod}')
conn.commit()
e1.delete(0, END)
e2.delete(0, END)
e1.focus_set()
show()
else:
messagebox.showwarning('توجه', 'لطفا ابتدا یک مورد را انتخاب کنید')
# ساخت پنجره اصلی
win = Tk()
win.title('برنامه مدیریت کارها')
win.geometry('400x350')
# فیلد تاریخ
l1 = Label(win, text='تاریخ')
l1.place(x=50, y=20)
e1 = Entry(win)
e1.place(x=80, y=20)
# فیلد عنوان کار
l2 = Label(win, text='کار')
l2.place(x=50, y=50)
e2 = Entry(win)
e2.place(x=80, y=50)
# دکمهها
b1 = Button(win, text='افزودن', command=add_task)
b1.place(x=280, y=100, width=100)
b2 = Button(win, text='حذف', command=hazf)
b2.place(x=280, y=140, width=100)
b3 = Button(win, text='تغییر وضعیت', command=change)
b3.place(x=280, y=180, width=100)
b4 = Button(win, text='خروج', command=win.destroy)
b4.place(x=280, y=220, width=100)
# لیستباکس نمایش کارها
la1 = Listbox(win)
la1.place(x=50, y=100, width=200)
la1.bind('<<ListboxSelect>>', onselect)
# کمبوباکس فیلتر
combo_filter = ttk.Combobox(win, values=['نمایش همه', 'انجام شده', 'انجام نشده'],
state='readonly')
combo_filter.place(x=50, y=280, width=200)
combo_filter.current(0)
combo_filter.bind('<<ComboboxSelected>>', lambda event: show())
# نمایش اولیه
show()
# اجرای برنامه
win.mainloop()
sudo apt install python3-tk).
توضیح بخشهای اصلی کد (برای امتحان عملی)
در آزمون عملی معمولاً ازت میپرسن هر بخش چه کاری انجام میده. این خلاصه رو حفظ کن:
اتصال به دیتابیس
دستور sqlite3.connect('todo.db') یک فایل دیتابیس
به نام todo.db میسازه. اگر وجود داشته باشه، بهش وصل میشه.
جدول todolist با ۴ ستون (id, tarikh, onvan, vazyat) ساخته میشه.
تابع add_task() — افزودن کار
مقدار فیلدهای تاریخ و عنوان رو میگیره، با دستور
INSERT در دیتابیس ذخیره میکنه، و پس از پاک کردن
فیلدها، لیست رو دوباره نمایش میده.
تابع show() — نمایش لیست
بر اساس فیلتر انتخابشده در Combobox، دستور
SELECT مناسب رو اجرا میکنه و نتایج رو
داخل Listbox نمایش میده.
تابع onselect() — انتخاب آیتم
وقتی روی یک ردیف از لیست کلیک میکنی، اطلاعاتش رو از لیست میخونه، در فیلدهای ورودی میریزه و id و وضعیت رو در متغیرهای global ذخیره میکنه.
تابع change() — تغییر وضعیت
اگر کار انجامنشده (❌) باشه، به انجامشده (✔) تغییر میکنه
و برعکس. با دستور UPDATE دیتابیس آپدیت میشه.
تابع hazf() — حذف کار
اول با messagebox تأیید میگیره، بعد با دستور
DELETE رکورد رو از دیتابیس پاک میکنه.
ساخت رابط گرافیکی
با Tk() پنجره اصلی ساخته میشه، سپس با Label، Entry، Button، Listbox و Combobox اجزای رابط ساخته و با متد place() چیده میشن.
نحوه اجرای پروژه در ۴ قدم ساده
پایتون را نصب کن
از سایت python.org آخرین نسخه پایتون ۳ رو دانلود و نصب کن. حین نصب گزینه Add Python to PATH رو حتماً تیک بزن.
فایل را ذخیره کن
کد بالا رو کپی کن، توی یک فایل به نام
todo.py ذخیره کن. دقت کن پسوند فایل
.py باشه، نه .py.txt.
اجرا در ترمینال
ترمینال (یا CMD) رو باز کن، به مسیر فایل برو و دستور
python todo.py رو بزن. برنامه اجرا میشه.
شروع استفاده
تاریخ و عنوان کار رو وارد کن، دکمه افزودن رو بزن. کارها در دیتابیس ذخیره میشن و دفعه بعد هم قابل مشاهدهان.
مزایای یادگیری پایتون در آموزشگاه کامپیوتر راهکار تبریز
اگر میخواهی پایتون را اصولی، پروژهمحور و با مدرک معتبر یاد بگیری، آموزشگاه راهکار بهترین انتخاب در تبریز است:
آمادهای پایتون رو حرفهای یاد بگیری؟
این مقاله فقط یک پروژه بود. برای تبدیل شدن به یک برنامهنویس پایتون حرفهای و قبولی در آزمون فنی و حرفهای، باید مسیر اصولی رو طی کنی. دوره پایتون آموزشگاه راهکار تبریز دقیقاً همون مسیریه که لازم داری.
سوالات متداول درباره پروژه To Do List و پایتون
آیا برای ساخت To Do List باید برنامهنویسی بلد باشم؟
برای شروع، آشنایی مقدماتی با پایتون کافیه. در این مقاله کد کامل و کامنتگذاری شده رو در اختیارت گذاشتیم، پس حتی اگه تازهکار هم باشی میتونی اجراش کنی و یاد بگیری.
چه تفاوتی بین Tkinter و PyQt برای ساخت برنامه دسکتاپ وجود داره؟
Tkinter سادهتره و بهصورت پیشفرض در پایتون نصبه. PyQt ظاهر مدرنتری داره ولی نیاز به نصب جداگانه و یادگیری بیشتری داره. برای شروع و آزمون فنی و حرفهای، Tkinter انتخاب بهتری است.
آیا این پروژه برای نمونه سوال عملی فنی و حرفهای مناسبه؟
بله، دقیقاً. ترکیب Tkinter و SQLite یکی از رایجترین ساختارهای آزمون عملی پایتون در سازمان فنی و حرفهای است. تسلط بر این پروژه بهت کمک میکنه در آزمون موفق بشی.
چرا از SQLite استفاده کردیم و نه MySQL؟
SQLite نیازی به نصب سرور جداگانه نداره، در پایتون بهصورت داخلی وجود داره و برای برنامههای دسکتاپ سبک انتخاب ایدهآلیه. MySQL بیشتر برای برنامههای وب و شبکه استفاده میشه.
آیا میتونم این پروژه رو توی گیتهاب بذارم؟
قطعاً! این کار به شدت توصیه میشه. کارفرماها نمونهکارهای عملی رو خیلی جدی میگیرن.
چطور میتونم پروژه رو توسعه بدم؟
اضافه کردن جستجو، اولویتبندی کارها، دستهبندی رنگی، یادآور تاریخ، خروجی گرفتن به CSV. هر کدوم میتونه پروژه رو حرفهایتر کنه.
دوره پایتون آموزشگاه راهکار چقدر طول میکشه؟
طول دوره بستگی به سطح و اهداف شما داره. برای اطلاع دقیق، با شماره 041-35574231 تماس بگیرید تا مشاوره رایگان دریافت کنید.
آیا در تبریز برای پایتون کار هست؟
بله. شرکتهای نرمافزاری، استارتاپها و آموزشگاههای متعددی در تبریز به دنبال برنامهنویس پایتون هستن.
برای ثبتنام در دوره پایتون با چه شمارهای تماس بگیرم؟
برای مشاوره رایگان و ثبتنام، با شماره 041-35574231 تماس بگیرید.
پروژه ساختی — حالا وقت یادگیری حرفهایه!
در دوره جامع پایتون آموزشگاه راهکار تبریز ثبتنام کن، از صفر تا پروژههای حرفهای پیش برو، مدرک فنی و حرفهای دریافت کن و وارد بازار کار پرتقاضای برنامهنویسی شو.