中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python使用Turtle庫繪制動態鐘表

發布時間:2020-10-17 19:39:04 來源:腳本之家 閱讀:243 作者:i_chaoren 欄目:開發技術

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

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

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

使用5個turtle對象

1個turtle:繪制外表盤

3個turtle:模擬表針行為

1個turtle:輸出表盤上文字

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

python使用Turtle庫繪制動態鐘表

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

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()

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

永济市| 资中县| 吉安县| 晋江市| 天台县| 崇信县| 从化市| 沁源县| 临沂市| 专栏| 民权县| 英超| 岱山县| 唐河县| 隆昌县| 张家口市| 渝北区| 城固县| 南开区| 乌兰察布市| 淅川县| 金溪县| 柘城县| 浦东新区| 南汇区| 湾仔区| 尉犁县| 丽江市| 当雄县| 永顺县| 周宁县| 台北县| 佛冈县| 凌源市| 修文县| 廊坊市| 泸定县| 舞阳县| 武胜县| 衡水市| 乌拉特前旗|