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()
運行結果
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林站長站。
新聞熱點
疑難解答