Cách xây dựng ứng dụng hẹn giờ Pomodoro bằng Python
Kỹ thuật Pomodoro là một kỹ thuật quản lý thời gian được phát triển bởi Francesco Cirillo. Nó liên quan đến việc sử dụng đồng hồ bấm giờ để chia nhỏ công việc thành các khoảng thời gian 25 phút cách nhau 5 phút nghỉ giải lao. Khi bạn hoàn thành chu trình này bốn lần, bạn có thể nghỉ lâu hơn 20 phút.
Kỹ thuật Pomodoro giúp tăng năng suất, loại bỏ phiền nhiễu và tăng sự tập trung của một cá nhân vào công việc. Kỹ thuật này loại bỏ đa nhiệm và thưởng cho bạn những giờ giải lao như một phần thưởng. Điều này giúp bạn luôn thư thái và có động lực để tiếp tục công việc một cách chuyên tâm.
Mục Lục
Mô-đun Tkinter và Toán học
Để xây dựng Ứng dụng hẹn giờ Pomodoro, bạn cần có mô-đun Tkinter và Math. Tkinter là thư viện GUI tiêu chuẩn cho Python. Nó cung cấp nhiều tiện ích con như nút, nhãn và hộp văn bản, vì vậy bạn có thể phát triển ứng dụng ngay lập tức. Để cài đặt Tkinter, hãy mở terminal và thực hiện:
pip install tkinter
Mô-đun Math có trong thư viện Python tiêu chuẩn và rất hữu ích trong việc thực hiện các phép tính toán học. Nó đi kèm với các hàm số học, lượng giác, hàm mũ, logarit, tiện ích và các hằng số như pi và e.
Cách xây dựng ứng dụng hẹn giờ Pomodoro bằng Python
Bạn có thể tìm thấy mã nguồn của Ứng dụng hẹn giờ Pomodoro bằng Python trong kho lưu trữ GitHub này.
Bắt đầu bằng cách nhập mô-đun Tkinter và Math. Khởi tạo các biến thời gian hiệu quả công việc Pomodoro, thời gian nghỉ, thời gian nghỉ dài, bộ đếm và bộ đếm thời gian. Bạn sẽ sử dụng biến đếm, đại diệnđể tìm ra số chu kỳ Pomodoro mà bộ đếm thời gian đã hoàn thành.
from tkinter import *
import mathWORK_MIN = 25
SHORT_BREAK_MIN = 5
LONG_BREAK_MIN = 20
reps = 0
timer = None
Xác định một chức năng, reset_timer(). Bắt đầu bằng cách thiết lập Bắt đầu trạng thái của nút trở lại bình thường để kích hoạt nó; sau này bạn sẽ thấy nơi để vô hiệu hóa nó.
Gọi phương thức after_cancel() để dừng chức năng hẹn giờ. Sử dụng item_config() trên canvas để đặt lại bộ hẹn giờ hiển thị trên màn hình về 0. Thay đổi văn bản tiêu đề thành “Hẹn giờ” và tô màu tím. Xóa tất cả các dấu kiểm hiện có bằng cách đặt văn bản thành chuỗi trống.
Tham khảo biến toàn cục reps và đặt lại về 0.
def reset_timer():
start_button["state"] = "normal"
root.after_cancel(timer)
canvas.itemconfig(timer_text, text="00:00")
title_label.config(text="Timer", fg=
check_marks.config(text="")
global reps
reps = 0
Xác định một chức năng start_timer(). Đây là nơi bạn sẽ vô hiệu hóa Bắt đầu để ngăn người dùng nhấp lại vào nút đó.
Tiếp tục bằng cách tham khảo toàn cầu đại diện biến và tăng dần nó. Nhận số giây để thực hiện công việc của bạn, thời gian nghỉ ngắn và thời gian nghỉ dài. Nếu biến bộ đếm không để lại phần dư khi chia cho tám (bốn chu kỳ Pomodoro trong đó một chu kỳ bao gồm công việc và một phiên nghỉ ngắn), hãy khởi động bộ hẹn giờ nghỉ dài và hiển thị nó trên màn hình ở màu Xanh dương.
Tương tự, nếu phần còn lại bằng 0 khi chia cho hai, hãy bắt đầu và hiển thị bộ hẹn giờ nghỉ ngắn bằng màu Xanh lục. Nếu không, hãy bắt đầu hẹn giờ làm việc và hiển thị tương tự bằng màu Đỏ.
def start_timer():
start_button["state"] = "disabled"
Xác định một chức năng, đếm ngược() mà chấp nhận đếm. Đặt biến số đếm tối thiểu là số nguyên nhỏ gần nhất với số đếm chia cho 60. Đặt số đếm thứ hai làm mô đun của số đếm cho 60. Nếu số giây nhỏ hơn 10, hãy hiển thị thêm một số 0 ở phía trước nó. Đặt canvas hiển thị phút và thời gian hiện tại như đã tính ở trên.
Nếu số đếm lớn hơn 0, hãy tham khảo bộ hẹn giờ chung và đặt yêu cầu nó gọi lại chính hàm đếm ngược sau một giây và giảm số đếm xuống một.
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)
Nếu không, hãy gọi start_timer() chức năng, đặt các dấu chọn thành 0 và tính toán các phiên làm việc dưới dạng số nguyên nhỏ nhất gần nhất với bộ đếm chia cho hai. Lặp lại các phiên làm việc và tăng các điểm đánh dấu một cách thích hợp. định cấu hình check_marks() chức năng hiển thị văn bản dưới dạng biến dấu tích.
else:
start_timer()
marks = ""
work_sessions = math.floor(reps / 2) for _ in range(work_sessions):
marks += "✓"
check_marks.config(text=marks)
Khởi tạo phiên bản Tkinter và hiển thị cửa sổ gốc. Đặt tiêu đề cho ứng dụng của bạn và định cấu hình ứng dụng đó để có một số phần đệm theo cả hai hướng. Đặt nền thành màu vàng nhạt.
root = Tk()
root.title("Pomodoro Timer Application")
root.config(padx=100, pady=50, bg="#f7f5dd")
Xác định tiện ích nhãn hiển thị văn bản dưới dạng Bộ hẹn giờ. Đặt màu phông chữ, màu nền và kiểu phông chữ. Sử dụng Grid layout manager để sắp xếp các thành phần của ứng dụng. Đặt nhãn tiêu đề ở hàng đầu tiên và cột thứ hai.
title_label = Label(text="Timer", fg='#A020F0', bg="#f7f5dd", font=("Arial", 50))
title_label.grid(column=1, row=0)
Xác định canvas có chiều rộng và chiều cao là 200×224 pixel. Đặt độ dày đường viền thành không. Sử dụng tiện ích PhotoImage để hiển thị ảnh Cà chua trên canvas. Sử dụng tạo_hình ảnh () phương pháp để chèn hình ảnh trên canvas.
Sử dụng tạo_văn bản () phương pháp tạo văn bản thời gian trong mm:ss định dạng. Đặt chiều rộng, chiều cao, văn bản, màu sắc và kiểu phông chữ của thời gian đếm ngược. Đặt cái này vào hàng thứ hai và cột thứ hai của lưới.
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)
Xác định hai nút, nút bắt đầuVà nút reset. Đặt văn bản mà nó sẽ hiển thị, không có đường viền, chức năng mà nó sẽ thực thi khi được nhấp, màu nền và kiểu phông chữ. Vị trí nút Bắt đầu ở cột đầu tiên, hàng thứ hai và nút Đặt lại ở cùng cột, hàng thứ ba.
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)
Tạo một nhãn ban đầu hiển thị các dấu kiểm là không có. Đặt màu phông chữ, màu nền và kiểu phông chữ. Đặt nó vào cột thứ hai và hàng thứ tư, bên dưới các nút ở giữa.
Các vòng lặp chính() hàm yêu cầu Python chạy vòng lặp sự kiện Tkinter và lắng nghe các sự kiện cho đến khi bạn đóng cửa sổ.
check_marks = Label(text="", fg='#00FF00', bg="#f7f5dd", font=("arial", 25, "bold"))
check_marks.grid(column=1, row=3)root.mainloop()
Đặt tất cả mã lại với nhau và dùng thử ứng dụng Hẹn giờ Pomodoro.
Đầu ra ví dụ của Ứng dụng hẹn giờ Pomodoro
Khi chạy chương trình này, bạn sẽ thấy một cửa sổ có tiêu đề “Hẹn giờ” và đồng hồ đếm ngược được đặt thành 0. Khi nhấp vào nút Bắt đầu, tiêu đề sẽ thay đổi thành “Công việc” và đồng hồ bấm giờ bắt đầu đếm ngược.
Sau đúng 25 phút, dấu kiểm xuất hiện và ứng dụng bắt đầu hẹn giờ nghỉ giải lao ngắn năm phút.
Sau bốn chu kỳ Pomodoro, bộ đếm thời gian Nghỉ dài được thiết lập trong 20 phút. Khi thời gian kết thúc, bộ hẹn giờ làm việc sẽ bắt đầu lại.
Các ứng dụng bạn có thể xây dựng bằng mô-đun Math và Tkinter
Có rất nhiều ứng dụng bạn có thể xây dựng bằng Tkinter và mô-đun Math. Người mới bắt đầu có thể khám phá nền tảng bằng cách xây dựng một máy tính. Máy tính có thể thuộc nhiều loại khác nhau bao gồm số học, hình học, vẽ đồ thị và tài chính. Bạn có thể tạo thẻ nhớ toán học và trình tạo bài toán để người dùng giải.
Hộp công cụ chuyển đổi hệ thống số, lượng giác và thống kê có thể hữu ích cho việc thực hành toán học theo cách đơn giản và thú vị hơn.