Làm cách nào để đặt hẹn giờ trong gui python?

Kỹ thuật Pomodoro là một hệ thống quản lý thời gian hiệu quả. Nơi thay vì đa nhiệm, một người tập trung vào một nhiệm vụ cụ thể tại thời điểm nhất định

Mục tiêu của GUI

Chúng tôi tập trung vào nhiệm vụ trong 25 phút liên tục và sau đó nghỉ giải lao 5 phút. Chạy nước rút thời gian 30 phút được gọi là một Pomodoro duy nhất. Sau 4 Pomodoro như vậy, người dùng sẽ nghỉ lâu hơn 20 phút

Các bước xây dựng GUI
  1. Nhập thư viện tkinter và toán học
  2. Định nghĩa các hằng số toàn cầu
  3. Thiết lập giao diện người dùng
  4. Đóng khung cơ chế đếm ngược
  5. Đóng khung cơ chế hẹn giờ
  6. Đặt logic Đặt lại bộ hẹn giờ

Bước 1. Nhập thư viện tkinter và toán học

from tkinter import *
import math

Bước 2. Định nghĩa các hằng số toàn cục

PINK = "#e2979c"
RED = "#e7305b"
GREEN = "#9bdeac"
YELLOW = "#f7f5dd"
FONT_NAME = "Courier"
WORK_MIN = 25
SHORT_BREAK_MIN = 5
LONG_BREAK_MIN = 20
reps = 0
timer = None

Ở đây chúng tôi đã mã hóa cứng giá trị hex của màu sắc để dễ dàng tham khảo sau này khi áp dụng chúng vào GUI

Bước 3. Thiết lập giao diện người dùng

window = Tk()
window.title("Pomodoro")
window.config(padx=100, pady=50, bg=YELLOW)
title_label = Label(text="Timer", fg=GREEN, bg=YELLOW, font=(FONT_NAME, 50))
title_label.grid(column=1, row=0)
# Need to check the background colour of the canvas as well
canvas = Canvas(width=200, height=224, bg=YELLOW, highlightthickness=0)
# highlightthicknes is used for making the highlight disappear
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=(FONT_NAME, 35, "bold"))
canvas.grid(column=1, row=1)
# x and y values are half of the width and the height
start_button = Button(text="Start", highlightthickness=0, command=start_timer)
start_button.grid(column=0, row=2)
reset_button = Button(text="Reset", highlightthickness=0, command = reset_timer)
reset_button.grid(column=2, row=2)

check_marks = Label(text="✓", fg=GREEN, bg=YELLOW)
check_marks.grid(column=1, row=3)

Chúng tôi sẽ sử dụng lớp Tk để xác định cửa sổ và cũng cung cấp cho nó phần đệm 100, 50 pixel

Chúng tôi sẽ sử dụng bố cục lưới để đặt các nút và nhãn

“Highlightthickness” loại bỏ đường viền của canvas. Hãy thử bỏ qua nó và bạn sẽ biết tôi đang nói về cái gì

fg = được sử dụng để xác định màu nền trước trong khi bg được sử dụng để xác định màu nền

Bước 4. Cơ chế đếm ngược


def count_down(count):
count_min = math.floor(count / 60)
count_sec = count % 60
# Dynamic typing allows for changing the data type of a variable
# Just by assigning it to a different kind of value
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 = window.after(1000, count_down, count - 1)
else:
start_timer()
marks = ""
work_sessions = math.floor(reps/2)
for _ in range(work_sessions):
marks += "✓"
check_marks.config(text=marks)

Logic đơn giản là nhập cả phút và giây vào ô “00. định dạng 00”. Để thực hiện điều này, chúng ta chỉ cần chuyển số giây và đếm số phút bằng cách chia nó cho 60 và làm tròn số bằng cách sử dụng phương thức sàn của python

Một lỗi có thể xảy ra ở đây là sau khi số giây xuống dưới 10, GUI sẽ hiển thị thứ gì đó thuộc loại “0. 8” giả sử lúc đó là 8 giây

Để tránh điều này, chúng tôi sử dụng điều kiện if và sử dụng khái niệm gõ động đang thay đổi kiểu dữ liệu của “count_sec” thành chuỗi

if count > 0:
global timer
timer = window.after(1000, count_down, count - 1)
else:
start_timer()
marks = ""
work_sessions = math.floor(reps/2)
for _ in range(work_sessions):
marks += "✓"
check_marks.config(text=marks)

Phương thức “after” được sử dụng để thêm độ trễ mà sau đó một cửa sổ cụ thể sẽ tự cập nhật. Sau mỗi lần lặp lại pomodoro, chúng tôi cũng thêm vào một dấu kiểm. Điều này được truyền vào trong chuỗi rỗng “marks”

Bước 5. Đóng khung cơ chế hẹn giờ

def start_timer():
global reps
reps += 1
work_sec = WORK_MIN * 60
short_break_sec = SHORT_BREAK_MIN * 60
long_break_sec = LONG_BREAK_MIN * 60
# If it's the 8th rep
if reps % 8 == 0:
count_down(long_break_sec)
title_label.config(text="Break", fg=RED)
# If it's the 2nd/4th/6th rep
elif reps % 2 == 0:
count_down(short_break_sec)
title_label.config(text="Break", fg=PINK)
# If it's the 1st/3rd/5th/7th rep
else:
count_down(work_sec)
title_label.config(text="Work", fg=GREEN)

Cách chúng tôi quản lý phần thời gian của công việc và thời gian nghỉ đơn giản là đưa ra một biến toàn cục của bộ đếm được gọi là reps

Đối với mỗi lần lặp lại thứ 8, chúng tôi nghỉ giải lao dài 20 phút

if reps % 8 == 0:
count_down(long_break_sec)
title_label.config(text="Break", fg=RED)

Tương tự, với mỗi lần lặp lại thứ 2/4/6, chúng ta nghỉ ngắn 5 phút

# If it's the 2nd/4th/6th rep
elif reps % 2 == 0:
count_down(short_break_sec)
title_label.config(text="Break", fg=PINK)

Nếu không chúng tôi làm việc

________số 8

Bước 6. Đặt logic Đặt lại bộ hẹn giờ

def reset_timer():
window.after_cancel(timer)
canvas.itemconfig(timer_text, text="00:00")
title_label.config(text="Timer")
check_marks.config(text="")
global reps
reps = 0

Logic đặt lại bộ hẹn giờ đủ đơn giản trong trường hợp nút hẹn giờ được nhấp vào thì GUI sẽ tự đặt lại. Để hiển thị thời gian trên canvas hoặc trên tomoto, chúng tôi sử dụng phương thức “itemconfig” và đối với nhãn, chúng tôi sử dụng phương thức “config”

Ngoài ra, đừng quên cung cấp, ở cuối mã để ngăn canvas biến mất

mainloop() yêu cầu Python chạy vòng lặp sự kiện Tkinter. Phương thức này lắng nghe các sự kiện, chẳng hạn như nhấp vào nút hoặc nhấn phím và chặn bất kỳ mã nào xuất hiện sau khi nó chạy cho đến khi cửa sổ mà nó gọi được đóng lại. Hãy tiếp tục và đóng cửa sổ bạn đã tạo và bạn sẽ thấy một lời nhắc mới được hiển thị trong trình bao

PINK = "#e2979c"
RED = "#e7305b"
GREEN = "#9bdeac"
YELLOW = "#f7f5dd"
FONT_NAME = "Courier"
WORK_MIN = 25
SHORT_BREAK_MIN = 5
LONG_BREAK_MIN = 20
reps = 0
timer = None
0

Bạn có thể tìm thấy mã hoàn chỉnh tại đây

Tóm lược

Chúng tôi đã phát triển thành công GUI Pomodoro bằng Thư viện Tkinter và trong quá trình đó, chúng tôi đã tìm hiểu về mô-đun tkinter, phương pháp như canvas, config, v.v. và quan trọng nhất là gõ động

Tôi hy vọng đây là một trải nghiệm học tập tuyệt vời cho bất kỳ ai chịu khó đọc và thực hiện nó. )

Bạn có thích những nỗ lực của tôi? . ☕

Làm cách nào để tạo đồng hồ đếm ngược trong Python với khả năng tạm dừng và tiếp tục?

Hãy xem thứ tự thực hiện các câu lệnh của bạn. .
Bạn tạo đối tượng đếm ngược
Bạn chạy đếm. phương pháp chạy
Bạn ngủ trong 3 giây
Bạn tạm dừng sử dụng số đếm. phương pháp tạm dừng

Làm cách nào để tạo đồng hồ trong Python?

Mã đồng hồ kỹ thuật số bằng Python .
Nhập gói. Chúng tôi đang sử dụng thời gian của hệ thống. .
Xác định màn hình cửa sổ. Ở đây kích thước của màn hình cửa sổ là 500x500. .
Tôi cũng đã thêm nhãn chân trang trên màn hình cửa sổ. .
Định nghĩa hàm thời gian. .
Tạo kiểu cho tiện ích đồng hồ để làm cho nó hấp dẫn. .
Thêm chức năng vòng lặp chính ở cuối

Làm cách nào để tạo đồng hồ bấm giờ trong Python?

Cách tạo đồng hồ bấm giờ bằng Python .
thời gian. thời gian () trong Python. Chúng tôi sẽ sử dụng thời gian. .
Đã đến lúc tạo đồng hồ bấm giờ bằng Python. Chúng tôi sẽ nhập mô-đun thời gian. Người dùng sẽ nhấn Enter để bắt đầu bấm giờ. .
đầu ra. Nếu 140 giây đã trôi qua thì đầu ra sẽ như sau. .
10 phản hồi cho “Cách tạo đồng hồ bấm giờ trong Python”

Có thư viện hẹn giờ trong Python không?

Python Timer là một lớp/thư viện để quản lý độ phức tạp về thời gian của mã của bạn. Sử dụng nhiều mô-đun thời gian, bạn có thể tạo một hệ thống trong mã của mình để kiểm tra thời gian của đoạn mã tương ứng.