gpt4 book ai didi

python使用Turtle库绘制动态钟表

转载 作者:qq735679552 更新时间:2022-09-27 22:32:09 24 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章python使用Turtle库绘制动态钟表由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

Python函数库众多,而且在不断更新,所以学习这些函数库最有效的方法,就是阅读Python官方文档。同时借助Google和百度.

本文介绍的turtle库对应的官方文档地址 。

绘制动态钟表的基本思路如下(面向对象的编程):

使用5个turtle对象 。

1个turtle:绘制外表盘 。

3个turtle:模拟表针行为 。

1个turtle:输出表盘上文字 。

根据实时时间使用ontimer()函数更新表盘画面,显示效果如下:

python使用Turtle库绘制动态钟表

相关函数的使用在程序中进行了详细的注释,代码如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
from turtle import *
from datetime import *
 
def Skip(step):
  penup()
  forward(step)
  pendown()
 
def mkHand(name, length):
  #注册Turtle形状,建立表针Turtle
  reset() #清空当前窗口,并重置位置等信息为默认值
  Skip( - length * 0.1 )
  begin_poly()
  forward(length * 1.1 )
  end_poly()
  handForm = get_poly()
  register_shape(name, handForm)
 
def Init():
  global secHand, minHand, hurHand, printer
  mode( "logo" ) # 重置Turtle指向北
  #建立三个表针Turtle并初始化
  mkHand( "secHand" , 135 )
  mkHand( "minHand" , 110 )
  mkHand( "hurHand" , 90 )
  secHand = Turtle()
  secHand.shape( "secHand" )
  minHand = Turtle()
  minHand.shape( "minHand" )
  hurHand = Turtle()
  hurHand.shape( "hurHand" )
  for hand in secHand, minHand, hurHand:
   hand.shapesize( 1 , 1 , 3 )
   hand.speed( 0 )
  #建立输出文字Turtle
  printer = Turtle()
  printer.hideturtle()
  printer.penup()
  
def SetupClock(radius):
  #建立表的外框
  reset()
  pensize( 7 )
  for i in range ( 60 ):
   Skip(radius)
   if i % 5 = = 0 :
    forward( 20 )
    Skip( - radius - 20 )
   else :
    dot( 5 )
    Skip( - radius)
   right( 6 )
   
def Week(t):
  week = [ "星期一" , "星期二" , "星期三" ,
    "星期四" , "星期五" , "星期六" , "星期日" ]
  return week[t.weekday()]
 
def Date(t):
  y = t.year
  m = t.month
  d = t.day
  return "%s %d %d" % (y, m, d)
 
def Tick():
  #绘制表针的动态显示
  t = datetime.today()
  second = t.second + t.microsecond * 0.000001
  minute = t.minute + second / 60.0
  hour = t.hour + minute / 60.0
  secHand.setheading( 6 * second) #设置朝向,每秒转动6度
  minHand.setheading( 6 * minute)
  hurHand.setheading( 30 * hour)
  
  tracer( False ) #不显示绘制的过程,直接显示绘制结果
  printer.forward( 65 )
  printer.write(Week(t), align = "center" ,
      font = ( "Courier" , 14 , "bold" ))
  printer.back( 130 )
  printer.write(Date(t), align = "center" ,
      font = ( "Courier" , 14 , "bold" ))
  printer.back( 50 )
  printer.write( "i_chaoren" , align = "center" ,
      font = ( "Courier" , 14 , "bold" ))
  printer.home()
  tracer( True )
 
  ontimer(Tick, 1000 ) #1000ms后继续调用tick
 
def main():
  tracer( False ) #使多个绘制对象同时显示
  Init()
  SetupClock( 160 )
  tracer( True )
  Tick()
  mainloop()
 
if __name__ = = "__main__"
  main()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我.

原文链接:https://blog.csdn.net/i_chaoren/article/details/57474714 。

最后此篇关于python使用Turtle库绘制动态钟表的文章就讲到这里了,如果你想了解更多关于python使用Turtle库绘制动态钟表的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com