Trong bài viết này, chúng ta sẽ sử dụng Python và thư viện Tkinter để tạo đồng hồ đếm ngược. Dự án này có nhiều cách sử dụng khác nhau và là phần giới thiệu tuyệt vời để tạo các chương trình máy tính đơn giản
Các dự án như thế này cho phép sinh viên áp dụng thực tế các khái niệm trừu tượng mà họ học được để tạo ra sản phẩm cuối cùng. Chương trình đếm ngược này là cách hoàn hảo để xây dựng cả tư duy sáng tạo và kỹ năng giải quyết vấn đề của bạn trong khi tạo một chương trình máy tính chức năng
Dự án này dành cho ai?
Đây là một dự án cấp độ mới bắt đầu dành cho những người mới làm quen với Python. Trước khi bắt đầu dự án này, bạn nên có kinh nghiệm tạo GUI Tkinter đơn giản [Giao diện người dùng đồ họa], các biến và hàm. Đây là những khái niệm mà bạn sẽ sử dụng và xây dựng khi viết mã cho dự án này
Chúng ta sẽ học gì?
Chương trình này tập trung vào việc tạo GUI bằng thư viện Tkinter. Sau đó, chúng tôi sẽ tạo các chức năng để cho phép người dùng đặt thời gian đếm ngược và sẽ bắt đầu đếm ngược. Những khái niệm này phổ biến đối với nhiều dự án liên quan đến mã hóa, vì vậy, hoàn thành dự án này sẽ giúp bạn hiểu sâu hơn về cách chúng được sử dụng
Các tính năng cần xem xét
- Người dùng sẽ nhập khoảng thời gian họ muốn đặt hẹn giờ
- Sau khi họ nhấn nút bắt đầu đếm ngược, bộ hẹn giờ sẽ bắt đầu
Mã giả
Đây là mã giả cho chương trình này
Nhập Tkinter và thư viện thời gian
Cửa sổ thiết lập với quyền root
Đặt kích thước cửa sổ thành 300x250 px và tiêu đề cửa sổ thành “Countdown Timer”
Tạo 3 biến chuỗi để lưu trữ các giá trị giờ, phút và giây được đặt trên bộ hẹn giờ
Đặt các giá trị cho giờ, phút và giây thành “00”
Tạo một hộp nhập tên là “hourEntry” và đặt nó ở [80, 20]
Tạo một hộp nhập tên là “minuteEntry” và đặt nó ở [130, 20]
Tạo một hộp nhập có tên là “secondEntry” và đặt nó tại [180, 20]
chức năng gửi
Cố gắng
Đặt biến tạm thời thành giờ*3600 + phút*60 + giây
Ngoại trừ
in ["Vui lòng thử lại"]
Trong khi nhiệt độ >-1
Divmod giá trị tạm thời và 60
Đặt giờ thành 0
Nếu phút>60
Divmod giá trị phút và 60
Định dạng giờ, phút, giây
Cập nhật GUI
Ngủ trong 1 giây
Nếu tạm thời == 0
Tạo một cửa sổ mới để thông báo cho người dùng rằng đã hết thời gian
tạm thời-=1
Tạo một nút có tên “Đặt thời gian đếm ngược” bằng lệnh gửi và đặt nó ở [70, 120]
Chạy vòng lặp chính
Các bước chính
Dự án này có thể được chia thành 3 bước chính.
- Nhập thư viện và thiết lập cửa sổ
- Tạo nhãn GUI
- Tạo chức năng gửi
Bước 1. Nhập thư viện và thiết lập cửa sổ
Điều đầu tiên chúng ta cần làm khi tạo trò chơi này là nhập tất cả các thư viện cần thiết. Đối với chương trình này, chúng tôi sẽ sử dụng thư viện Tkinter và mô-đun hộp thư của nó để tạo GUI cũng như thư viện thời gian để mã hóa và giải mã tin nhắn. Chúng tôi có thể nhập các thư viện này bằng mã này
import time from tkinter import * from tkinter import messagebox
Tiếp theo, chúng ta cần thiết lập cửa sổ Tkinter. Chúng tôi sẽ khởi tạo Tkinter, chọn kích thước cho cửa sổ và đặt tiêu đề. Trong bước này, chúng tôi cũng sẽ tạo các biến để lưu trữ các giá trị cho giờ, phút và giây mà bộ đếm ngược sẽ được đặt thành. Một khi điều này đã được thực hiện, mã là
root = Tk[] root.geometry["300x250"] root.title["Countdown Timer"] hour=StringVar[] minute=StringVar[] second=StringVar[]
Bước 2. Tạo nhãn GUI
Bây giờ chúng ta cần đặt một số giá trị mặc định cho giờ, phút và giây của bộ đếm ngược. Đối với ví dụ này, chúng tôi sẽ đặt các giá trị mặc định này thành 0. Điều này sẽ đảm bảo rằng nếu người dùng quyết định không đặt giá trị cho số giờ thì bộ hẹn giờ sẽ không đếm ngược trong bất kỳ số giờ nào. Code cho phần này như sau
hour.set["00"] minute.set["00"] second.set["00"]
Tiếp theo, đã đến lúc tạo nhãn và hộp văn bản cho GUI. Chúng sẽ bao gồm nhãn và mục nhập hộp văn bản cho thông báo, khóa và chế độ, cũng như hộp văn bản để hiển thị kết quả.
Gợi ý. Mỗi nhãn tuân theo một định dạng mã rất giống nhau, vì vậy sau khi bạn học cách tạo một nhãn, bạn sẽ dễ dàng tạo các nhãn khác
Gợi ý. Định dạng cho một kiểu nhập văn bản như sau. Mục nhập [root, font = 'kiểu phông chữ', textvariable = tên biến, bg = 'màu nền']. địa điểm [tọa độ x, tọa độ y]
hourEntry= Entry[root, width=3, font=["Arial",18,""], textvariable=hour].place[x=80,y=20] minuteEntry= Entry[root, width=3, font=["Arial",18,""], textvariable=minute].place[x=130,y=20] secondEntry= Entry[root, width=3, font=["Arial",18,""], textvariable=second].place[x=180,y=20]
Cho đến nay chúng tôi có nhãn, nhưng không có nút để chạy mã. Điều này sẽ được tạo trong bước thứ ba và bước cuối cùng của chúng tôi sau khi chúng tôi tạo chức năng gửi
Bước 3. Tạo chức năng
Bây giờ chúng ta đã hoàn thành việc tạo các nhãn GUI chính, đã đến lúc tạo chức năng gửi. Chức năng này chịu trách nhiệm chạy chương trình bằng cách cho phép người dùng đặt thời gian đếm ngược và cũng quản lý thời gian bằng cách đếm ngược từng giây. Chúng tôi sẽ bắt đầu bằng cách thiết lập chức năng và nhận một số giá trị từ đầu vào của người dùng
def submit[]: try: temp = int[hour.get[]]*3600 + int[minute.get[]]*60 + int[second.get[]] except: print["Please try again"]
Như bạn có thể thấy, chúng tôi đã sử dụng câu lệnh thử và ngoại trừ để nhận đầu vào của người dùng - nếu người dùng nhập giá trị thì chúng sẽ được thêm vào hàm và nếu không, người dùng sẽ được yêu cầu nhập giá trị hợp lệ. Tiếp theo, chúng tôi sẽ chuyển đổi phút và giây và lưu trữ giá trị này đến hai chữ số thập phân. Mã cho phần này là
while temp >-1: mins,secs = divmod[temp,60] hours=0 if mins >60: hours, mins = divmod[mins, 60] hour.set["{0:2d}".format[hours]] minute.set["{0:2d}".format[mins]] second.set["{0:2d}".format[secs]]
Bây giờ chúng ta chỉ cần cập nhật thời gian còn lại khi đếm ngược và tạo thông báo khi đếm ngược kết thúc.
root.update[] time.sleep[1] if [temp == 0]: messagebox.showinfo["Time Countdown", "Time's up "] temp -= 1
Như bạn có thể thấy, chúng tôi đã đặt bộ hẹn giờ ngủ trong 1 giây trước khi tăng thời gian lên -1. Chúng tôi cũng đã sử dụng phương thức hộp thông báo để tạo cửa sổ bật lên cho người dùng biết khi nào quá trình đếm ngược kết thúc. Bây giờ điều này đã hoàn tất, chúng ta đã hoàn thành chức năng gửi. Tất cả những gì còn lại phải làm bây giờ là tạo các nút và gọi vòng lặp chính để chạy chương trình.
Cuối cùng, chúng ta đang ở bước cuối cùng, bao gồm việc tạo nút để bắt đầu đếm ngược
button = Button[root, text='Set Countdown Time', bd='5', command= submit].place[x = 70,y = 120] root.mainloop[]
Bạn sẽ nhận thấy rằng mỗi nút tuân theo định dạng rất giống với nhãn và hộp văn bản mà chúng tôi đã tạo trước đó. Chúng tôi cũng đã sử dụng. place[] một lần nữa để định vị từng nút. Cuối cùng, chúng tôi đã gọi root. mainloop[] để chạy toàn bộ chương trình từ đầu. Và với điều đó, dự án này đã kết thúc
dự án hoàn thành
Bây giờ dự án đã hoàn thành. Chúng tôi hy vọng bạn thấy vui khi tạo đồng hồ đếm ngược đơn giản này và hy vọng rằng bạn đã học được nhiều hơn về lập trình với Python. Đảm bảo kiểm tra mã của bạn ngay bây giờ và xem nó hoạt động như thế nào. Nếu bạn gặp khó khăn hoặc gặp bất kỳ sự cố nào với mã của mình, hãy thử xem lại mã đó trong trình soạn thảo văn bản của bạn hoặc bằng cách xem mã có trong bài viết để tham khảo