Đồng hồ bấm giờ python | Laptrinhcanban.com

HOME › >>

Đồng hồ bấm giờ python

Hướng dẫn cách tạo ra một chiếc đồng hồ bấm giờ python. Bằng cách ứng dụng module time , datetime (thao tác với thời gian) và module tkinter(thao tác với GUI) trong python, bạn sẽ tạo ra được những chiếc đồng hồ xịn xò made in python sau bài học này.

Đồng hồ bấm giờ Python | digital

Chúng ta có thể dùng module time trong python kết hợp với module tkinter trong python để tạo ra một chiếc đồng hồ bấm giờ Python rất chi ra xịn xò, với các dòng code sau đây.
Lưu ý là bạn cần phải lưu chúng lại dưới một file py , ví dụ như là clock.py và chạy trên máy tính thì đồng hồ bấm giờ Python mới hiện ra.

clock.py

from tkinter import *
from datetime import datetime
import time
c = Canvas(width = 700, height = 300, background = '#00ffff')
c.pack()

try:
while True:
now = datetime.now()

s = '{0:0>2d}:{1:0>2d}:{2:0>2d}'.format(now.hour, now.minute, now.second)

c.create_rectangle(0, 0, 700, 300, outline = '#00ffff', fill = '#00ffff')

c.create_text(350, 150, text = s, font = ('', 100), fill = 'blue')

c.update()

time.sleep(0.1)
except:
pass

Sau khi chạy file clock.py ở trên, kết quả là một chiếc đồng hồ xịn xò đã hiện ra như sau:
Đồng hồ bấm giờ Python

Bạn cũng có thể thay đổi màu cho đồng hồ bằng cách thay đổi giá trị của fill của dòng c.creat_rectangle, ví dụ là một chiếc đồng hồ màu cam như sau:
Đồng hồ bấm giờ Python màu cam

Giải thích code
Trước hết, chúng ta dùng lệnh import để import các module cần thiết là tkinter và datetime, cùng với module time.
Tại dòng code thứ 4, chúng ta tạo ra Tinker Canvas - là một khu vực hình chữ nhật dùng để vẽ hình ảnh hoặc các bố cục phức tạp khác. Bạn có thể đặt đồ họa, văn bản, tiện ích hoặc khung trên Canvas.

c = Canvas(width = 700, height = 300, background = '#00ffff')

Sau khi tạo ra khung vẽ ảnh kích thước rộng 700px và cao 300px, với giá gỗ màu blue như trên, chúng ta sẽ tiến hành vẽ thời gian thôi.

Vì đồng hồ chạy vô hạn, nên chúng ta sẽ dùng while True để tạo ra một vòng lặp vô hạn.
Trong mỗi vòng lặp:

  1. Dùng datetime.now() để lấy thời khắc hiện tại.
  2. Chuyển thời khắc ở trên sang dạng giờ:phút:giây, với dòng code:
    s = '{0:0>2d}:{1:0>2d}:{2:0>2d}'.format(now.hour, now.minute, now.second)
  3. Điền thời gian này lên khung với phương thức create_rectagle() và create_text()
  4. Update thời gian hiện tại, sau đó chờ 0.1 giây và tiến hành điền thời gian tiếp theo, với dòng code:
    c.update()
    time.sleep(0.1)

Sau đó là chạy chương trình và thưởng thức thành quả thôi.

Đồng hồ bấm giờ Python | Đồng hồ analog

Nếu bạn chưa thỏa mãn với chiêc đồng hồ điện tử hình chữ nhật ở trên, hãy cùng tạo ra một chiếc đồng hồ analog đẹp mê ly với chương trình sau đây:

clock_analog.py

from tkinter import *  #tkinter để thao tác với GUI, giúp tạo ra một window khi chạy Python
from datetime import datetime #tính thời khắc hiện tại

import time #thay đổi thời gian sau mỗi 0.1s
import math # vẽ đường tròn làm mặt đồng hồ

WINwidth = 800 #độ lớn của đồng hồ
WINcolor = '#ffffff' #Màu sắc của đồng hồ

WINheight = WINwidth #Chiều rộng của Window
S_length = WINwidth / 2 * 0.75 #Chiều dài kim giây
M_length = S_length * 0.95 #Chiều dài kim phút
H_length = S_length * 0.8 #Chiều dài kim giờ
H_LINEwidth = 8 #Độ phì của kim giờ
M_LINEwidth = H_LINEwidth / 2 #Độ phì của kim phút
S_LINEwidth = 1 #Đồ phì của kim giây

#Tạo Window
Clock = Tk()
Clock.title("AnalogClock")

w = Canvas(Clock, width = WINwidth, height = WINheight, background = WINcolor)
w.pack()

w.create_oval(WINwidth / 2 - 5, WINheight / 2 - 5, WINwidth / 2 + 5, WINheight / 2 + 5, fill="black")
w.create_oval(5, 5, WINwidth-5, WINheight-5, width = 2) #Tạo vòng tròn bên ngoài đồng hồ

FontSize = int(WINwidth / 14) #Size của chữ
Fx = 0 #Sửa vị trí của chữ hiển thị giờ
Fy = FontSize / 10
R = S_length + FontSize * 0.9 #Bán kính của chữ hiển thị giờ
A = 0 #Độ lớn của góc tạo với chữ hiển thị giờ
for i in range(1,13): #Hiển thị chữ
A = A + 30
Tx = R * math.cos(A / 180 * math.pi) #Tọa độ của chữ hiển thị giờ
Ty = R * math.sin(A / 180 * math.pi)
w.create_text(WINwidth / 2 + Ty - Fx, WINheight / 2 - Tx + Fy, text = i, font = ("", FontSize))

try:
while True:
#Bắt đầu vòng lặp tính giờ
now = datetime.now() #lấy thời gian hiện tại
if now.hour > 12: #Biểu thị thời gian dưới dạng 12h
nowhour = now.hour - 12
else:
nowhour = now.hour
#Nếu kim giây chạy thì kim phút cũng chạy theo
nowhour = nowhour + now.minute / 60 + now.second / 3600 #Thay đổi định dạng thời gian
nowminute = now.minute + now.second / 60 #Thay đổi định dạng phút

H_A = nowhour / 12 * 360 * math.pi /180 #Độ lớn của góc tạo với kim
M_A = nowminute / 60 * 360 * math.pi / 180
S_A = now.second / 60 * 360 * math.pi / 180

H_x = math.cos(H_A) * H_length #tính toán độ dài của kim so với trung tâm đồng hồ
H_y = math.sin(H_A) * H_length
M_x = math.cos(M_A) * M_length
M_y = math.sin(M_A) * M_length
S_x = math.cos(S_A) * S_length
S_y = math.sin(S_A) * S_length

w.create_text(WINwidth / 2 , WINheight / 2 + WINwidth / 8, text = datetime.now().strftime('%Y/%m/%d %H:%M:%S'), font = ("", int(FontSize / 1.5)), tag="Y") #Hiển thị Năm tháng ngày giờ phút giây

w.create_line(WINwidth / 2, WINheight / 2, WINwidth / 2 + H_y, WINheight / 2 - H_x, width = H_LINEwidth, tag="H") #Kim giờ
w.create_line(WINwidth / 2, WINheight / 2, WINwidth / 2 + M_y, WINheight / 2 - M_x, width = M_LINEwidth, tag="M") #Kim phút
w.create_line(WINwidth / 2, WINheight / 2, WINwidth / 2 + S_y, WINheight / 2 - S_x, width = S_LINEwidth, tag="S") #Kim giây

w.update() #Update thời gian mới

w.delete("H") #Xóa thời gian cũ
w.delete("M")
w.delete("S")
w.delete("Y")

time.sleep(0.1) #update đồng hồ sau mỗi 0.1s
except:
pass

Ở chương trình này có ứng dụng cả module math với sin, cos để vẽ đường tròn, và bạn có thể tìm hiểu thêm tại bài viết Số pi trong Python.

Sau khi lưu các dòng code trên vào file clock_analog.py và chạy chương trình, kết quả là một chiếc đồng hồ analog xịn xò đã hiện ra:
Đồng hồ bấm giờ Python | analog

Tổng kết

Trên đây Kiyoshi đã hướng dẫn bạn về cách tạo ra một chiếc đồng hồ bấm giờ python rồi. Hãy ứng dụng Python đế tạo ra nhiều sản phẩm độc và lạ hơn bạn nhé.

URL Link

https://laptrinhcanban.com/python/nhap-mon-lap-trinh-python/datetime-trong-python/dong-ho-bam-gio-python/

Hãy chia sẻ và cùng lan tỏa kiến thức lập trình Nhật Bản tại Việt Nam!

HOME  › >>

Profile
きよしです!笑

Tác giả : Kiyoshi (Chis Thanh)

Kiyoshi là một cựu du học sinh tại Nhật Bản. Sau khi tốt nghiệp đại học Toyama năm 2017, Kiyoshi hiện đang làm BrSE tại Tokyo, Nhật Bản.