پروژههای گرافیکی ساده، یکی از بهترین راهکارها برای شروع یادگیری برنامهنویسی و افزایش مهارتهای عملی هستند. در این مقاله قصد داریم به شما آموزش دهیم چگونه یک تایمرگرافیکی شمارش معکوس بسازید که به کمک آن بتوانید زمان را به شکل تصویری و واضح ببینید. استفاده از زبان پایتون و کتابخانه Tkinter باعث میشود بتوانید بدون پیچیدگی، یک رابط کاربری کارآمد و ساده طراحی کنید. همچنین با استفاده از ماژول time، مدیریت زمان در پروژه شما به سادگی انجام خواهد شد. این پروژه به ویژه برای مبتدیانی که میخواهند وارد دنیای برنامهنویسی GUI شوند بسیار مناسب است و میتواند به عنوان اولین پروژه عملی شما محسوب شود.

معرفی کتابخانههای مورد نیاز
برای شروع تایمر گرافیکی نیاز داریم دو کتابخانه مهم را بشناسیم و آماده کنیم:
1. Tkinter: این کتابخانه رابط گرافیکی کاربر (GUI) را میسازد و به ما امکان میدهد پنجرهها، دکمهها، متنها و سایر المانهای گرافیکی را طراحی کنیم.
2. time: این ماژول به ما کمک میکند تا عملیاتهای مرتبط با زمان مانند تاخیر و شمارش معکوس را کنترل کنیم.
کتابخانه Tkinter به صورت پیشفرض در اکثر توزیعهای پایتون وجود دارد و نیازی به نصب جداگانه ندارد. اما اگر در سیستم شما نصب نشده است، میتوانید آن را با دستور زیر نصب کنید:
bash
pip install tk
ماژول time نیز بخشی از کتابخانه استاندارد پایتون است و نیازی به نصب اضافی ندارد.
بط کاربری تایمر
اولین قدم، ساخت یک پنجره ساده است که کاربر بتواند زمان دلخواه را به ثانیه وارد کند، سپس با زدن دکمه شروع، تایمر آغاز شود و شمارش معکوس به نمایش درآید.
کد زیر یک نمونه ساده از این رابط کاربری را نشان میدهد:
import tkinter as tk
import time
def start_timer():
try:
countdown(int(entry.get()))
except ValueError:
label.config(text="لطفاً عدد صحیح وارد کنید")
def countdown(t):
while t >= 0:
mins, secs = divmod(t, 60)
time_format = '{:02d}:{:02d}'.format(mins, secs)
label.config(text=time_format)
root.update()
time.sleep(1)
t -= 1
label.config(text="زمان به پایان رسید!")
root = tk.Tk()
root.title("تایمر شمارش معکوس")
entry = tk.Entry(root, width=20)
entry.pack(pady=10)
button = tk.Button(root, text="شروع تایمر", command=start_timer)
button.pack(pady=5)
label = tk.Label(root, font=("Helvetica", 32))
label.pack(pady=20)
root.mainloop()
Pythonدر این کد:
– یک پنجره اصلی با عنوان «تایمر شمارش معکوس» ایجاد میشود.
– باکس ورود زمان (entry) به کاربر اجازه میدهد تا زمان را به ثانیه وارد کند.
– دکمهای برای شروع تایمر ساخته شده که هنگام کلیک، مقدار وارد شده را خوانده و شروع به شمارش معکوس میکند.
– تابع شمارش معکوس (countdown) با استفاده از حلقه while زمان باقیمانده را نمایش میدهد و هر ثانیه کاهش میدهد.
– پس از اتمام زمان، پیام «زمان به پایان رسید!» نمایش داده میشود.
توضیح عملکرد کد
کد بالا مثال خوبی از چگونگی کارکرد تایمر گرافیکی است. با این حال، اجرای time.sleep(1) داخل حلقه باعث میشود که کل برنامه تا اتمام تایمر قفل شود و رابط کاربری واکنشی نداشته باشد. این موضوع در پروژههای بزرگتر مشکل ساز است.
برای رفع این مشکل میتوانیم از روشهای بهینهتر مانند استفاده از تابع after در Tkinter بهره بگیریم که اجازه میدهد برنامه به صورت غیرمسدود کننده زمان را مدیریت کند و رابط گرافیکی همواره پاسخگو باقی بماند.
مثال بهینهتر:
def countdown(t):
if t >= 0:
mins, secs = divmod(t, 60)
time_format = '{:02d}:{:02d}'.format(mins, secs)
label.config(text=time_format)
root.after(1000, countdown, t-1)
else:
label.config(text="زمان به پایان رسید!")Pythonدر این نمونه، تابع countdown به طور بازگشتی با فاصله ۱۰۰۰ میلیثانیه (یک ثانیه) فراخوانی میشود و باعث بهروزرسانی نرمتر رابط کاربری میشود.
بهبود رابط کاربری
برای جذابتر و کاربردیتر کردن تایمر، میتوان امکانات زیر را به آن اضافه کرد:
– تغییر رنگ پسزمینه هنگام پایان تایمرگرافیکی: این کار با تغییر تنظیمات رنگ پنجره یا المانهای نمایشگر به سادگی انجام میشود.
– پخش صدای هشدار: با استفاده از کتابخانههایی مانند playsound میتوان صدای هشدار پخش کرد.
– اضافه کردن دکمههای توقف و ریست: به کاربر امکان میدهد که تایمر را متوقف یا از نو شروع کند.
برای نمونه، نصب و استفاده از playsound به صورت زیر است:
bash
pip install playsound
و در کد:
from playsound import playsound
def countdown(t):
if t >= 0:
mins, secs = divmod(t, 60)
time_format = '{:02d}:{:02d}'.format(mins, secs)
label.config(text=time_format)
root.after(1000, countdown, t-1)
else:
label.config(text="زمان به پایان رسید!")
playsound('alarm.mp3')Pythonبا این افزودنیها،تایمر گرافیکی شما بسیار کاربردیتر و جذابتر خواهد شد.
جمعبندی
در این مقاله با ساخت یک تایمر شمارش معکوس گرافیکی آشنا شدیم که به کمک Tkinter و ماژول time در پایتون پیادهسازی شده است. یاد گرفتیم چگونه یک رابط کاربری ساده بسازیم که زمان را دریافت کند و شمارش معکوس را نمایش دهد. همچنین به نکات بهینهسازی عملکرد و افزودن امکانات جانبی پرداختیم.
تایمر گرافیکی نمونهای عالی برای مبتدیان است تا مفاهیم پایهای برنامهنویسی گرافیکی و مدیریت زمان را به صورت عملی یاد بگیرند. شما میتوانید با افزودن ویژگیهای بیشتر، این تایمرگرافیکی را به پروژهای حرفهایتر تبدیل کنید و مهارتهای خود را ارتقا دهید.