总投资20亿元 腾晖光伏5GW高效光伏组件新扩项目开工建设

1.说明:

1.1 推荐指数:★★★

1.2 推荐环境:python3.8和微软vscode编辑器

1.3 感言:

python的turtle也能画出文字时钟,效果虽然不理想,有闪跳,但是也很棒,未采用3d矩阵显示,明显是我水平不行呀。我只想说:无所不能的python也可以做到。

主要是熟悉pyth) 4 q 5on的编程思维,熟悉代码结构,复习python的编程的基础知识,增加自己学习python的兴趣。

分享出来,共同学习,互相指点,教学相长。

python的turtle也能仿抖音网红文字时钟的代码及分析

2.效果图

python的turtle也能仿抖音网红文字时钟的代码及分析

========

代码分析:代码还是可以继续优化的。

3.第1步:

#--0 Z 9-第1步---导出模块---
import turtle
from datetime import *
import time

4.第2步:

#---第2步---定义函数跳跃---抬起画笔,向前运动一段距离放下--
def Skip(step):
turtl$ | V | s U ? B se.penup() #提笔== z ^pu=penup
turtle.forward(step) #画线fd=forward
turtle.pendown() #落笔=pd=pendown

5.第3V - - R / / l D步:

#---第3步---画圈函数---
def drawCircle(content,content_len,init_data,init_data_tH A D Kype,circle_radius,circle_rak K Z ) w m C ^ kdius_sti s p a # k | M ep,colo. = ^ ( b z 8 fr,font_size):
#回到原V * O = @ Q点=中心点=0,0
turtlY x z D 0 * oe.home()
turtle.pensize(3) #笔头大小设置
turtle.pencolor(color)
#圆点到时间的向左长度线
Skip(circle- X x t E ] _ M_radius+circle_radius_sty f K { Z 1ep+10*3)
#显示数据
turtle.write(init_data_type, align=6 x 3 p ( g\"center: . 7 K\", font=(\"Courier\", font_size,\'bold\'))
#往左条---中心# . E点的位置
Skip(-circle_radius-circle_radius_step-10*3)

initdata_index=content.index(init_data)
for i in range(initdata_index,contentx d b c #_len):
Skip(circle_radius)
#测长度,列表的长度,可以是时分秒的列表
fleb U g / Sn=len(cont| F , 1 u . J cent[i])
if i == initdata_index:
#圆心点与中心点的水平向右的距离,即圆点的水平画线长度,显示‘时’
turtle.forward(75)
##圆心点与中心点的水平向X N J K 3 ~右的距离G p 5,后退-90
turtle.forward(-75)
for nb , Y V * : a 9ame in ran_ 4 M 2 V . 0 ~ge(flen):
#画一圈时分秒的标签
turtle.write(content[i][name], align=\"c^ + p ( / ) 9 q 5enter\", font=(l * r 8 k l & n\"Courier\", font_size))
#秒跳
Skip(15)
#分跳
Skip(-15*flen)
#时跳
Skip(-circle_radius)
#转角度
turtle.left(360/content_le C Yen)
for i in range(inita c z J _ ) 5 $data_iH J 1 x 2 Z 6 ndex):

Skip(circle_rad? ) pius)
flen=len(content[i])
for name in range(flen):
#显示时分秒一圈一圈~ i 1 E p标签
turtle.write(content[i][name], align=\"centE Q M | 8 p G Fer\", font=(\"Courier\", font_size))J ? M T u * )
Skip(15)
Skip(-15*flen)
Skip(-cirS g k A . d 7 dcle_radius)
#向左转,回到水平向右的角度
turtle.left(360/content_lenu e ^)

6.第4步:

#---第4步---相关自定义函数---
#---定义星期---
de! a ^ X gf Week(t): ^ / d ? R I
week = [\"星期一\", \"星期二\", \"星期三\",\"星期四\", \"星期五\", \j Y ( ~"D M j 5 | / d 7星期六\", \"星期[ C 7 r日\"]
return week[t.y ; 9 $ * Jweekday()]

#---定义日T = g x 6 * * 9 O期---
def Date(t):
y = t.year
m = t.month
d = t.day
return \"%s-%d-%d\" % (y, m, d)

#---画线显示--e K i-
def drawline(draw):
turtle.pendown() if draw else turtle.penup()
turtle.fd(40)
turtle.right(9; 1 b0)

#---显示右侧时分秒的晶体数字标签---
def drawdigit(dig : . + { J C ait):
draw$ k F S . k * f `line(True) if digit in [2, 3, 4,` 5 7 5, 6, 8, 9] else drawline(False)
draw4 _ b 6 Rline(TH X ZrL p Z - : A Y K jue) if digit in [0, 1, 3, L o ? * U 4, 5, 6, 7, 8, 9] else drawline(False)
drawline(True) if digit in [0, 2, 3, 5, 6, 8, 9] else drawline(False)
drawline(True) if digit in [0, 2, 6, 8]x s Z y 3 R ! else drawline(False)
turt/ x Z ` Tle.left(90)
drawline(True) i- = Kf digit in [0, 4, 5, 6, 8, 9] else drawlg 6 } dine(False)
drawline(True) if digit in [0, 2, 3,b 6 z X b j 5, 6, 7, 8, 9] else drawline(False)_ S i
drawline(True)q * / z u if digit inV ] v l [0, 1, 2, 3, 4, 7, 8, 9] else drawline(False)
turtle.left(180)
turtle.p_ f 4 &enup()y @ Z $ J
turtle.fd(20)

#---画右侧显c E * h示时分秒的汉字标签---
def drawdate(date):
for i in date:
#本来显示月日时分,从0,0=home原点向右显示,但是重复了,所以不显示月日时分
if i == \'-\':
turtle.write(\'\')
turtle.pencolor(\'green\')
#画线为绿色
turtle.fd(40)
#显示白色的秒数和秒
turtle.pen* [ _ r 5 $ r u 4color(\'white\')
elif i == \'*\':
turtle.write(\'秒\', font=(\'Arial\', 18, \( ; . ; b = _ o C'normal\'))
turtle.fd(50)
else:
drawdigitl o R . T K g(eval(i))

#---农历判h C P 1 B = ; 4 q断函数---
def Nongli] ! ; X e p C(t):
y=t.year
t=(y_ { ; A )-4)%60%10
d=(y-4)%60%12
T=[\"甲\",G % 6 * b\"乙\",\ n Q . O / v /"丙\",\"丁\",\"戊\",E B ! r l 9 O I\"己\",\"庚8 J 1 L C + B 7 d\",0 i ? K Q\"辛\"0 K S f ` ; X,\"壬\",\"癸\"]
D=[\"子\E ` g ] k C",\"丑\",\"寅P z d D 1 4\",\"卯\C t G a I",\"辰\",\"巳\",\"午\",\"未\",\"申\",\"酉\",\"戌\",\"亥\"]
#判断是农历的什么年?
#pan=\"{}年是:农历{}{}年C U A\".formal | jt(y,T[t],D[d])
pan=\"今年是:农历{}{}年\".format(T[t],D[d])
retur1 g Kn pan

7.第5步:

#---第5步---定义时钟走动---
def runclock():
turtle.reset()
t = datetime.today() #获取此刻时间
second = t.sec3 r o ; # j | a fond #+ t.microsecond * 0.000001= . X Q J :
minute = t.minute #+ second / 60.0
houp - 0 ] - : tr = t.hour# + minute / 60.0

#简体汉字列表---有空格字符串\'\'
Simplified_Chinese=[\'零\',\'一\', \'二\', \'三\', \'四\', \'五\', \'六\', \'七\', \'八\', \'九\', \'十\',
\'十y 6 * | M 7一\ l 0 2 _', \'十二\x q I | {', \'十三\', \'十四\', \'十五\', \'十六\', \_ { 0 L # y'十七\', \'十八\', \'十九\',
\'二十\',\'二十一\', \'二十二\', \'二十三\', \'s 2 ; y n 6 o /二十四\', \'二十五\', E M 6\'二十六\', \'二十七z V B u\', \'二十八\', \'二十九\',
\'三十\',\'三十一\'l L R % !, \'三十二\', \'三十三\', \'三十四\', \'三十五\', \'三十六\', \'三十七\', \'三十八\', \'三7 X a N ,十九\',
\'四十y P z\',\'四十一\', \'a ` W # Q四十W w k / T二\', \'四十三N y F ? @ ^\', \'四十四\', \'四十五\P * ^ 0 b 3', \'四十六\'_ F t u Q ? . } ?, \'四十七\', \'四十J 9 $ u { 8 F p O八\', \'四十九\',
\'五十\', \'五十一\', \'五十二\', \'五十三\', \'五A $ 0 K B十四\', \'五十五\', \'五十六\', \'五十七\', \'五十八\', \'五十九\'
]

#简体汉字时间列表
Simplified_hours=[\'一\', \'y O ^ - 2 l Q二\', \'三\', \'四\', \'五\',P O ] E 1 6 \'六\', \'七\', \'2 + 8 n W &八\', \'九\', \'S ! P l十\',\'十一\', \h U C K ! 3 p z Y'十二\', \'十三\',U s d 9
\'十四\',5 } r e p w F \'十五\', \'十六\', \'十七\', \'十八\', \'十九\',\'二十\' ,\'二十一\', \'二十二\', \'二十三\g a h * 5 h $ G', \'二十四\']

#字体大小6,颜色不同设定
#坐标比如:150,250,350是半径(正代表当前时间的时分秒水平向右;负值代表水平线向左);
#40是水平线的长度,时分秒显示位置,len是一秒条多少
#每跳动1秒都要从新绘画一次
drawCircle(Simplified_Chinese,len(Simplified_Chinese),Simplified_Chinese[second],\'秒\',350,40,] W ^ Y j\'green\',6)
drawCircle(Simplified_Chinese,len(Simplified_Chinese),SimpF j K e . mlified_Chi+ | 2 8nese[minute],\'分\',2T M y 7 ^ w 4 G50,40,\'red\',6)
drawCircle(Simplified_hours,len(Simplified_hours),Si1 p ] B m L u B Zmplified_hours[hour-1],\2 L U I z'时\',150,40,\'yY , gellow\',6)

#这J d c T t里不建议设置为t,因为有一个时间t,所以为tg=turtle龟代替
tg= turtle.Turtle()
tg.hideturtle() # 隐藏画笔的turtle形状,ht=hideturtle
tg.color(\'white\') #画笔的颜色,书写字体的颜色
tg.right(h 4 = J u-90)
tg.penup()

#显示右侧动态秒的晶体可变数字
drawdate(time.strftime(\'-----------%S*\', time.gmtime()))
tg.forward(450)
tg.bacg ; ! _k(400)
#显示星期
tg.write(Week(t), align=\"center\",font=(\"Cour1 1 7 B z n x i bier\", 8, \"bold\"))

#显示年月日
tgW z T 4 ) [ Q.back(90)
tg.write(Date(t), alD D e w jign=\"center\",font=(\"Courier\", 8, \"bold\"))
#建B * B 9 H F议输出农历庚子年
tg.k e Tback(400)
tg.write(Nongli(t), align=\"center\",font=(\"Courier\", 8, \"bold\"))

tg.right(90)
#计时函数,动态更新实k e l Q R & $ % $时时间,用来控制刷新时间。单位-毫秒
turtleT p K.ontimer(runclock, 1000)

8.第6步5 p } [ _ P T

#---第[ v o z * a6步---定义主函数---
def main():
# 打开/关闭龟动画,并为更1 f c新图纸设置延迟。
turtle.trace| . b a }r(False)# 关闭绘画追踪,可以用于加速绘画复杂图形
#注意不建议使用t或者tg,容易搞P N 1 S P ) u
ts = turtle.getscreen()
#背景颜色为黑色,我喜欢
ts.bgcolor(\"black\")
#调用函数:走钟
r2 { d / 0 o * t uunclock8 h u v = { f z()
ts.mainloop()

9.第w z S l7步:

#---第7步---调用函数程序---
if __name__ == \"__main__\":
main()
上一篇

比亚迪股份有限公司2019年度业绩快报

下一篇

【净网2020】支付宝发送“二次实名认证”短信?收到请马上删掉!

你也可能喜欢

  • 暂无相关文章!

发表评论

您的电子邮件地址不会被公开。 必填项已用 * 标注

提示:点击验证后方可评论!

插入图片
返回顶部