این ابزار مفید می تواند به شما کمک کند که کارایی بیشتری داشته باشید و می توانید خودتان با استفاده از Tkinter آن را بسازید.
تکنیک پومودورو یک تکنیک مدیریت زمان است که توسط فرانچسکو سیریلو توسعه یافته است. این شامل استفاده از یک تایمر برای تقسیم کار به فواصل 25 دقیقه ای است که با یک استراحت پنج دقیقه ای از هم جدا می شوند. هنگامی که این چرخه را چهار بار کامل کردید، می توانید 20 دقیقه استراحت طولانی تری داشته باشید.
تکنیک پومودورو بهره وری را افزایش می دهد، حواس پرتی را از بین می برد و تمرکز فرد را روی کار افزایش می دهد. این تکنیک از چندوظیفه خلاص می شود و به عنوان پاداش به شما استراحت می دهد. این به شما کمک می کند آرام و با انگیزه بمانید تا به طور اختصاصی به کار خود ادامه دهید.
ماژول Tkinter و Math
برای ساختن اپلیکیشن Pomodoro Timer، به ماژول Tkinter و Math نیاز دارید. Tkinter کتابخانه استاندارد رابط کاربری گرافیکی برای پایتون است. ویجتهای مختلفی مانند دکمهها، برچسبها و جعبههای متنی را ارائه میدهد، بنابراین میتوانید در کمترین زمان برنامهها را توسعه دهید. برای نصب Tkinter، یک ترمینال را باز کنید و اجرا کنید:
pip نصب tkinter
ماژول Math در کتابخانه استاندارد پایتون موجود است و در انجام محاسبات ریاضی بسیار مفید است. همراه با توابع حسابی، مثلثاتی، نمایی، لگاریتمی، سودمندی و ثابت هایی مانند pi و e می باشد.
نحوه ساخت اپلیکیشن تایمر Pomodoro با استفاده از پایتون
می توانید کد منبع برنامه Pomodoro Timer را با استفاده از Python در این مخزن GitHub پیدا کنید.
با وارد کردن ماژول Tkinter و Math شروع کنید. متغیرهای زمان بازده کاری، زمان استراحت، زمان استراحت طولانی، شمارنده و تایمر پومودورو را راه اندازی کنید. از متغیر شمارنده، تکرارها، برای تعیین تعداد چرخه های پومودورو که تایمر تکمیل کرده است استفاده می کنید.
from tkinter import *
import math
WORK_MIN = 25
SHORT_BREAK_MIN = 5
LONG_BREAK_MIN = 20
reps = 0
timer = None
یک تابع تعریف کنید، reset_timer(). با تنظیم حالت دکمه Start در حالت عادی شروع کنید تا فعال شود. بعداً خواهید دید که کجا آن را غیرفعال کنید.
برای توقف عملکرد تایمر، متد after_cancel() را فراخوانی کنید. از متد item_config() روی بوم استفاده کنید تا تایمر نمایش داده شده روی صفحه را صفر کنید. متن عنوان را به “تایمر” تغییر دهید و آن را بنفش کنید. با تنظیم متن روی رشته خالی، تمام علامت های چک موجود را پاک کنید.
تکرارهای متغیر سراسری را ارجاع دهید و آن را صفر کنید.
def reset_timer():
start_button["state"] = "normal"
root.after_cancel(timer)
canvas.itemconfig(timer_text, text="00:00")
title_label.config(text="Timer", fg=#A020F0')
check_marks.config(text="")
global reps
reps = 0
یک تابع start_timer () تعریف کنید. اینجاست که دکمه Start را غیرفعال میکنید تا کاربر نتواند دوباره روی آن کلیک کند.
با ارجاع به متغیر تکرار جهانی و افزایش آن ادامه دهید. تعداد ثانیه های اجرای کار، استراحت کوتاه و استراحت طولانی را دریافت کنید. اگر متغیر شمارنده هنگام تقسیم بر هشت (چهار چرخه پومودورو که یک چرخه شامل کار و یک جلسه استراحت کوتاه است) باقی نماند، تایمر استراحت طولانی را شروع کنید و آن را با رنگ آبی روی صفحه نمایش دهید.
به همین ترتیب، اگر با تقسیم بر دو، باقیمانده صفر شد، تایمر استراحت کوتاه را شروع کرده و با رنگ سبز نمایش دهید. در غیر این صورت، تایمر کار را شروع کرده و همان را با رنگ قرمز نمایش دهید.
def start_timer():
start_button["state"] = "disabled"
یک تابع، count_down() تعریف کنید که تعداد را بپذیرد. حداقل متغیر شمارش را به عنوان نزدیکترین عدد صحیح کوچک به تعداد تقسیم بر 60 تنظیم کنید. شمارش دوم را به عنوان مدول شمارش بر 60 تنظیم کنید. اگر ثانیه ها کمتر از 10 هستند، یک صفر اضافی در مقابل آن نمایش دهید. دقیقه و زمان فعلی را همانطور که در بالا محاسبه شده است، روی بوم تنظیم کنید.
اگر شمارش بزرگتر از صفر است، به تایمر سراسری رجوع کنید و پس از یک ثانیه تأخیر، خود تابع count_down را از آن بخواهید و شمارش را یک بار کاهش دهید.
def count_down(count):
count_min = math.floor(count / 60)
count_sec = count % 60
if count_sec < 10:
count_sec = f"0{count_sec}"
canvas.itemconfig(timer_text, text=f"{count_min}:{count_sec}")
if count > 0:
global timer
timer = root.after(1000, count_down, count - 1)
در غیر این صورت، تابع start_timer() را فراخوانی کنید، علامت های تیک را صفر کنید و جلسات کاری را به عنوان کوچکترین عدد صحیح به شمارنده تقسیم بر دو محاسبه کنید. در طول جلسات کاری تکرار کنید و علامت های تیک را به طور مناسب افزایش دهید. تابع check_marks() را برای نمایش متن به عنوان متغیر علامت تیک پیکربندی کنید.
else:
start_timer()
marks = ""
work_sessions = math.floor(reps / 2)
for _ in range(work_sessions):
marks += "✓"
check_marks.config(text=marks)
نمونه Tkinter را راه اندازی کنید و پنجره ریشه را نمایش دهید. عنوان برنامه خود را تنظیم کنید و آن را به گونه ای پیکربندی کنید که در هر دو جهت مقداری padding داشته باشد. پس زمینه را روی زرد روشن قرار دهید.
root = Tk()
root.title("Pomodoro Timer Application")
root.config(padx=100, pady=50, bg="#f7f5dd")
ویجت برچسبی را تعریف کنید که متن را به عنوان تایمر نمایش دهد. رنگ فونت، رنگ پسزمینه و سبکهای فونت آن را تنظیم کنید. از Grid layout manager برای سازماندهی عناصر برنامه استفاده کنید. برچسب عنوان را در سطر اول و ستون دوم قرار دهید.
title_label = Label(text="Timer", fg='#A020F0', bg="#f7f5dd", font=("Arial", 50))
title_label.grid(column=1, row=0)
یک بوم با عرض و ارتفاع 200×224 پیکسل را تعریف کنید. ضخامت حاشیه را روی صفر قرار دهید. از ویجت PhotoImage برای نمایش تصویر گوجه فرنگی بر روی بوم استفاده کنید. از متد ()create_image برای درج تصویر روی بوم استفاده کنید.
از متد ()create_text برای ایجاد متن زمان در قالب mm:ss استفاده کنید. عرض، ارتفاع، متن، رنگ و سبک فونت زمان شمارش معکوس را تنظیم کنید. این را در ردیف دوم و ستون دوم شبکه قرار دهید.
canvas = Canvas(width=200, height=224, highlightthickness=0)
tomato_img = PhotoImage(file="tomato.png")
canvas.create_image(100, 112, image=tomato_img)
timer_text = canvas.create_text(100, 130, text="00:00", fill="white", font=("Arial", 35, "bold"))
canvas.grid(column=1, row=1)
دو دکمه start_button و reset_button تعریف کنید. متنی که باید نمایش داده شود، بدون حاشیه، عملکردی که باید هنگام کلیک کردن اجرا شود، رنگ پسزمینه و سبکهای فونت را تنظیم کنید. دکمه Start را در ستون اول، ردیف دوم و دکمه Reset را در همان ستون، ردیف سوم قرار دهید.
start_button = Button(text="Start", highlightthickness=0, command=start_timer, bg="#e7305b", font=("arial", 15, "bold"))
start_button.grid(column=0, row=2)
reset_button = Button(text="Reset", highlightthickness=0, command = reset_timer, bg="#e7305b", font=("arial", 15, "bold"))
reset_button.grid(column=2, row=2)
برچسبی ایجاد کنید که در ابتدا علامت های چک را به عنوان هیچ نشان دهد. رنگ فونت، رنگ پس زمینه و سبک های فونت را تنظیم کنید. آن را در ستون دوم و ردیف چهارم، زیر دکمه های وسط قرار دهید.
تابع mainloop() به پایتون می گوید که حلقه رویداد Tkinter را اجرا کند و تا زمانی که پنجره را ببندید به رویدادها گوش دهد.
check_marks = Label(text="", fg='#00FF00', bg="#f7f5dd", font=("arial", 25, "bold"))
check_marks.grid(column=1, row=3)
root.mainloop()
همه کدها را کنار هم قرار دهید و برنامه Pomodoro Timer را امتحان کنید.
خروجی نمونه برنامه Pomodoro Timer
هنگامی که این برنامه را اجرا می کنید، پنجره ای با عنوان “Timer” و یک تایمر شمارش معکوس روی صفر می بینید. با کلیک بر روی دکمه Start، عنوان به “Work” تغییر می کند و تایمر شروع به شمارش معکوس می کند.
دقیقاً پس از 25 دقیقه، علامت چک ظاهر می شود و برنامه تایمر کوتاه پنج دقیقه ای را شروع می کند.
پس از چهار چرخه پومودورو، تایمر Long Break به مدت 20 دقیقه در جای خود قرار می گیرد. پس از اتمام زمان، تایمر کار دوباره شروع می شود.
برنامه هایی که می توانید با استفاده از ماژول ریاضی و Tkinter بسازید
برنامه های زیادی وجود دارد که می توانید با استفاده از Tkinter و ماژول ریاضی بسازید. مبتدیان می توانند با ساخت یک ماشین حساب پلت فرم را کشف کنند. ماشین حساب می تواند انواع مختلفی از جمله حسابی، هندسی، نموداری و مالی داشته باشد. شما می توانید فلش کارت های ریاضی و مولدهای مسئله ریاضی را برای کاربر ایجاد کنید تا آنها را حل کند.
مبدل سیستم اعداد، مثلثات و جعبه ابزار آمار می تواند برای تمرین ریاضیات به شیوه ای ساده تر و سرگرم کننده مفید باشد.