معرفی
در دنیای امروز، رابطهای گرافیکی جذاب نقش مهمی در تجربه کاربری دارند. پروژه ساخت ساعت دیجیتال با پایتون و کتابخانه Custom Tkinter تمرینی کاربردی برای یادگیری طراحی GUI است. در این پروژه یاد میگیریم چطور ساعت زندهای بسازیم که هر ثانیه بروزرسانی شود و ظاهر آن قابل شخصیسازی باشد.
کاربر میتواند بین مدلهای مختلف ساعت با رنگ، فونت و قاب متفاوت انتخاب کند و در صورت تمایل، در هر لحظه به صفحه انتخاب مدل بازگردد. این پروژه نقطه شروعی عالی برای درک ساخت اپلیکیشنهای تعاملی با رابط گرافیکی است.
پیشنیازها
- نصب پایتون ۳ روی سیستم
- آشنایی اولیه با Tkinter و مفاهیم پایهای GUI
- ویرایشگر مناسب مانند VS Code یا PyCharm
برای اجرای بهتر پروژه، پیشنهاد میشود با ویجتهایی مثل Label، Frame و Button آشنا باشید.
کتابخانههای مورد نیاز
- CustomTkinter: نسخه بهبود یافته Tkinter با طراحی مدرن و رنگهای شخصیسازیشده.
- time: کتابخانه استاندارد پایتون برای مدیریت و بروزرسانی لحظهای ساعت.
pip install customtkinter
نکات مهم قبل از کدنویسی
- ساعت باید هر ثانیه بروزرسانی شود.
- چند مدل مختلف ساعت با فونت و رنگ متفاوت طراحی کنید.
- پیشنمایش زنده مدلها در صفحه انتخاب نمایش داده شود.
- قابلیت بازگشت برای تغییر مدلها وجود داشته باشد.
- ظاهر ساعت قابل شخصیسازی باشد (فونت، رنگ متن، رنگ پسزمینه، قاب).
کدنویسی پروژه
import customtkinter as ctk
import time
models = [
{"font": ("Helvetica", 50), "fg_color": "white", "bg_color": "#2b2b2b", "name": "مدل 1"},
{"font": ("Courier", 60), "fg_color": "#00ff00", "bg_color": "black", "name": "مدل 2"},
{"font": ("Arial", 55), "fg_color": "yellow", "bg_color": "#1e1e1e", "name": "مدل 3"}
]
def update_time(label):
current_time = time.strftime("%H:%M:%S")
label.configure(text=current_time)
label.after(1000, lambda: update_time(label))
def open_clock(model):
model_window.destroy()
show_clock(model)
def show_clock(model):
global clock_window
clock_window = ctk.CTk()
clock_window.title("ساعت دیجیتال")
clock_window.configure(fg_color=model["bg_color"])
label = ctk.CTkLabel(clock_window, text="", font=model["font"], text_color=model["fg_color"])
label.pack(padx=50, pady=50)
back_btn = ctk.CTkButton(clock_window, text="بازگشت", command=lambda: back_to_models(clock_window))
back_btn.pack(pady=20)
update_time(label)
clock_window.mainloop()
def back_to_models(current_window):
current_window.destroy()
create_model_window()
def create_model_window():
global model_window
model_window = ctk.CTk()
model_window.title("انتخاب مدل ساعت")
ctk.CTkLabel(model_window, text="یک مدل ساعت انتخاب کن:", font=("Helvetica", 20)).pack(pady=20)
for model in models:
frame = ctk.CTkFrame(model_window)
frame.pack(pady=10, padx=20, fill="x")
preview = ctk.CTkLabel(frame, text="12:34:56", font=("Helvetica", 25),
text_color=model["fg_color"], fg_color=model["bg_color"])
preview.pack(side="left", padx=20, pady=10)
info_frame = ctk.CTkFrame(frame)
info_frame.pack(side="left", padx=20)
ctk.CTkLabel(info_frame, text=model["name"], font=("Helvetica", 18)).pack(pady=5)
ctk.CTkButton(info_frame, text="انتخاب", command=lambda m=model: open_clock(m)).pack(pady=5)
model_window.mainloop()
create_model_window()
نکات حرفهای و مهم
- پیشنمایش زنده مدلها پیش از انتخاب
- چندین مدل با ظاهرهای متنوع (کلاسیک، رومیزی و ساعت مچی)
- دکمه بازگشت برای انتخاب مجدد مدل
- بروزرسانی لحظهای زمان با
after() - امکان شخصیسازی کامل ظاهر ساعت
- قابل گسترش برای نمایش تاریخ یا تایمر
نتیجهگیری
پروژه ساعت دیجیتال با Custom Tkinter نمونهای عالی از طراحی رابط کاربری تعاملی در پایتون است. این برنامه نهتنها تمرینی برای مدیریت زمان و بروزرسانی لحظهای است، بلکه پایهای برای ساخت اپلیکیشنهای گرافیکی پیچیدهتر محسوب میشود. با کمی خلاقیت میتوانید آن را به ساعت هوشمند، تایمر یا تقویم گرافیکی تبدیل کنید.
منابع و مستندات
- CustomTkinter Documentation
- Python time module
- Tkinter GUI Programming by Example – Packt Publishing
- Python GUI Programming Cookbook – Packt Publishing