Python绘制时钟是一个基本的绘图程序,通过它我们可以熟悉Python 的绘图编程环境及其使用方法。下面我将为大家详细讲解如何使用Python编写时钟绘制程序。
1. 绘图库选择
一般Python绘图使用的库比较多,例如matplotlib、pycairo 等,本教程选取的是Python Tkinter 图形库,原因是它的使用简单,学习难度比较小。
2. 导入库
开始之前,我们需要导入Python Tkinter模块。
import tkinter as tk
import time
3. 创建画布并设置样式
使用Canvas(画布)类绘制时钟,需要设置画布的高、宽、背景等样式。
win = tk.Tk()
win.title("时钟")
canvas = tk.Canvas(win, height=300, width=300, bg='#f9f9f9')
canvas.pack()
4.绘制时钟圆形
时钟形态为圆形,在画布中通过 create_oval() 方法绘制一个圆形。
clock = canvas.create_oval(20, 20, 280, 280, width=4)
5.设置时钟刻度
使用 for 循环绘制12个刻度线。
for i in range(1, 13):
x = 150 + 110 * math.sin(i * 30 * math.pi / 180)
y = 150 - 110 * math.cos(i * 30 * math.pi / 180)
canvas.create_rectangle(x - 3, y - 3, x + 3, y + 3,
fill='#00ced1', outline='#00ced1')
6.绘制时钟指针
时针、分针和秒针的长度设置不同,因此我们分别进行绘制。
#时针
hour_line = canvas.create_line(150, 150, 150 + 50 * math.sin(hour_angle), 150 - 50 * math.cos(hour_angle), width=4, fill='red')
#分针
minute_line = canvas.create_line(150, 150, 150 + 80 * math.sin(minute_angle), 150 - 80 * math.cos(minute_angle), width=2, fill='blue')
#秒针
second_line = canvas.create_line(150, 150, 150 + 100 * math.sin(second_angle), 150 - 100 * math.cos(second_angle), width=1, fill='green')
完整示例代码
import tkinter as tk
import time
import math
win = tk.Tk()
win.title("时钟")
canvas = tk.Canvas(win, height=300, width=300, bg='#f9f9f9')
canvas.pack()
clock = canvas.create_oval(20, 20, 280, 280, width=4)
for i in range(1, 13):
x = 150 + 110 * math.sin(i * 30 * math.pi / 180)
y = 150 - 110 * math.cos(i * 30 * math.pi / 180)
canvas.create_rectangle(x - 3, y - 3, x + 3, y + 3,
fill='#00ced1', outline='#00ced1')
while True:
current_time = time.localtime()
hour_angle = current_time.tm_hour % 12 * 30 + current_time.tm_min / 2
minute_angle = current_time.tm_min * 6
second_angle = current_time.tm_sec * 6
#时针
hour_line = canvas.create_line(150, 150, 150 + 50 * math.sin(hour_angle),
150 - 50 * math.cos(hour_angle), width=4, fill='red')
#分针
minute_line = canvas.create_line(150, 150, 150 + 80 * math.sin(minute_angle),
150 - 80 * math.cos(minute_angle), width=2, fill='blue')
#秒针
second_line = canvas.create_line(150, 150, 150 + 100 * math.sin(second_angle),
150 - 100 * math.cos(second_angle), width=1, fill='green')
canvas.update()
canvas.delete(hour_line, minute_line, second_line)
win.mainloop()
示例说明
以上代码中使用 while 循环在后台循环执行时钟运转这个动作,根据常量时间计算时针、分针和秒针的旋转角度,并把旋转结果通过 Canvas 的 create_line() 方法绘制在画布上,实时更新,以达到动态时钟的效果
最后,使用 win.mainloop()
方法执行程序,并在窗口中展示时钟。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python绘制时钟的示例代码 - Python技术站