Đếm ngược Tkinter Python

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.  

  1. Nhập thư viện và thiết lập cửa sổ
  2. Tạo nhãn GUI
  3. 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

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

Có bộ đếm thời gian trong Python không?

Hàm thời gian trong mô-đun thời gian Python trả về số giây đã trôi qua kể từ kỷ nguyên được xác định lần cuối . Nó trả về giây ở dạng kiểu dữ liệu dấu phẩy động. Ví dụ trên cho thấy giá trị dấu phẩy động và số giây.

Bạn có thể kéo và thả trong tkinter không?

Tkinter. mô-đun dnd cung cấp hỗ trợ kéo và thả cho các đối tượng trong một ứng dụng, trong cùng một cửa sổ hoặc giữa các cửa sổ . Để cho phép kéo một đối tượng, bạn phải tạo một liên kết sự kiện cho đối tượng đó để bắt đầu quá trình kéo và thả.

Chủ Đề