Python中Turtle绘图函数-绘制时钟程序
生活随笔
收集整理的這篇文章主要介紹了
Python中Turtle绘图函数-绘制时钟程序
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Turtle常用的一些函數(shù),
參考博客:http://blog.csdn.net/zengxiantao1994/article/details/76588580
時鐘代碼設(shè)計
- 我們可以通過main函數(shù)查看整個時鐘代碼的設(shè)計
- 設(shè)計指針(Init())并顯示指針:設(shè)計指針的方向(turtle.mode(“l(fā)ogo”)),設(shè)計指針的長度、線寬,最后通過name注冊該指針,函數(shù)最后結(jié)果為顯示三個指向正上方的指針,三個指針重合。
- 建立表的外框(DrawClock()):繪制0的60的每分鐘圓點,如果是整點,就繪制整點標(biāo)志
- 開始動態(tài)運行時鐘(Tick( )):獲取當(dāng)前的時間,依據(jù)當(dāng)前時間得到每個指針該指向的方向角度,然后更改指針的指向,如secHand.setheading(角度)。寫當(dāng)前的日期。調(diào)用turtle.ontimer( )函數(shù)進(jìn)入循環(huán)調(diào)用
時鐘代碼如下
繪制時鐘的代碼,選自慕課網(wǎng)嵩天老師《Python語言程序設(shè)計》
from turtle import* from datetime import*# 移動距離,但是不繪制 def Skip(step):penup()forward(step)pendown()# 畫表盤 def DrawClock(radius):reset() # 將烏龜返回初始位置pensize(7)for i in range(60):Skip(radius)if i%5 == 0:forward(20)Skip(-radius - 20)else:dot(5) # 繪制圓點turtle.dot(直徑)Skip(-radius)right(6)def mkHand(name, length):reset()Skip(-length*0.1)begin_poly()forward(length*1.1)end_poly()handForm = get_poly()'''''begin_poly -- 開始記錄,end_poly -- 結(jié)束記錄,get_poly -- 繪畫記錄點'''register_shape(name, handForm) # 給handForm形狀起名def Init():global secHand, minHand, hurHand, printer # 定義這三個是全局變量mode("logo")'''''三種模式:standard,logo,world。turtle方向 默認(rèn)運動方向standard: 向右(朝東) 逆時針logo : 向上(朝北) 順時針world -- 自定義'''mkHand("secHand", 125)mkHand("minHand", 130)mkHand("hurHand", 90)secHand = Turtle()secHand.shape("secHand") # 對于該turtle變量賦值形狀minHand = Turtle()minHand.shape("minHand")hurHand = Turtle()hurHand.shape("hurHand")for hand in secHand, minHand, hurHand:hand.shapesize(1, 1, 3) # 調(diào)整三根指針的粗細(xì)hand.speed(0)printer = Turtle()printer.hideturtle() # 隱藏箭頭printer.penup()def Week(t):week = ["星期一", "星期二", "星期三","星期四", "星期五", "星期六", "星期日"]return week[t.weekday()]def Date(t):y = t.yearm = t.monthd = t.dayreturn "%s %d %d" % (y, m, d)# 鐘表更新 def Tick():t = datetime.today()second = t.second + t.microsecond*0.000001minute = t.minute + second/60.0hour = t.hour + minute/60.0secHand.setheading(6*second) # 重新設(shè)置朝向,設(shè)置指針的方向角度minHand.setheading(6*minute)hurHand.setheading(30*hour)tracer(False)printer.forward(65) # 前進(jìn)65寫星期printer.write(Week(t), align="center", font=("Courier", 14, "bold"))printer.back(130) # 退后130寫時間printer.write(Date(t), align="center", font=("Courier", 14, "bold"))# write函數(shù)中可以把指定的內(nèi)容進(jìn)行書寫printer.home()tracer(True)ontimer(Tick, 100) # 計時函數(shù)用來控制刷新時間。單位-毫秒def main():tracer(False) # 關(guān)閉繪畫追蹤,可以用于加速繪畫復(fù)雜圖形Init()DrawClock(160)tracer(True)Tick()mainloop() # mainloop則是主窗口的成員函數(shù),# 開始接收鼠標(biāo)的和鍵盤的操作。你現(xiàn)在就能夠通過鼠標(biāo)縮放以及關(guān)閉這個窗口了。if __name__ == "__main__":main()代碼運行效果圖:
總結(jié)
以上是生活随笔為你收集整理的Python中Turtle绘图函数-绘制时钟程序的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。