国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python使用turtle庫繪制時鐘

2020-02-15 21:58:27
字體:
來源:轉載
供稿:網友

Python函數庫眾多,而且在不斷更新,所以學習這些函數庫最有效的方法,就是閱讀Python官方文檔。同時借助Google和百度。

本文介紹的turtle庫對應的官方文檔地址

繪制動態鐘表的基本思路如下(面向對象的編程):

使用5個turtle對象
1個turtle:繪制外表盤
3個turtle:模擬表針行為
1個turtle:輸出表盤上文字

根據實時時間使用ontimer()函數更新表盤畫面,顯示效果如下:

相關函數的使用在程序中進行了詳細的注釋,代碼如下:

# -*- coding: utf-8 -*-"""Created on Fri Jan 12 10:43:55 2018@author: Administrator"""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",125)  mkhand("minhand",130)  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+second/60.0  sechand.setheading(6*second)  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.home()  tracer(True)  ontimer(tick,100)#100ms后繼續調用tickdef main():  tracer(False)  init()  setupclock(160)  tracer(True)  tick()  mainloop()main()

運行結果

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林站長站。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 贡觉县| 大新县| 咸宁市| 西乌| 济宁市| 连山| 泰宁县| 安顺市| 松滋市| 仙居县| 古蔺县| 会东县| 安泽县| 沭阳县| 历史| 仙居县| 太仓市| 安化县| 宜君县| 新宾| 鲜城| 万载县| 澄江县| 景谷| 吉林市| 滨海县| 郁南县| 马山县| 如皋市| 湘潭市| 阳西县| 温宿县| 定襄县| 贡嘎县| 大竹县| 西华县| 苍南县| 新安县| 平邑县| 辽宁省| 五华县|