Python中Turtle绘图函数-绘制时钟程序
生活随笔
收集整理的這篇文章主要介紹了
Python中Turtle绘图函数-绘制时钟程序
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Turtle常用的一些函數,
參考博客:http://blog.csdn.net/zengxiantao1994/article/details/76588580
時鐘代碼設計
- 我們可以通過main函數查看整個時鐘代碼的設計
- 設計指針(Init())并顯示指針:設計指針的方向(turtle.mode(“logo”)),設計指針的長度、線寬,最后通過name注冊該指針,函數最后結果為顯示三個指向正上方的指針,三個指針重合。
- 建立表的外框(DrawClock()):繪制0的60的每分鐘圓點,如果是整點,就繪制整點標志
- 開始動態運行時鐘(Tick( )):獲取當前的時間,依據當前時間得到每個指針該指向的方向角度,然后更改指針的指向,如secHand.setheading(角度)。寫當前的日期。調用turtle.ontimer( )函數進入循環調用
時鐘代碼如下
繪制時鐘的代碼,選自慕課網嵩天老師《Python語言程序設計》
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 -- 結束記錄,get_poly -- 繪畫記錄點'''register_shape(name, handForm) # 給handForm形狀起名def Init():global secHand, minHand, hurHand, printer # 定義這三個是全局變量mode("logo")'''''三種模式:standard,logo,world。turtle方向 默認運動方向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) # 調整三根指針的粗細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) # 重新設置朝向,設置指針的方向角度minHand.setheading(6*minute)hurHand.setheading(30*hour)tracer(False)printer.forward(65) # 前進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函數中可以把指定的內容進行書寫printer.home()tracer(True)ontimer(Tick, 100) # 計時函數用來控制刷新時間。單位-毫秒def main():tracer(False) # 關閉繪畫追蹤,可以用于加速繪畫復雜圖形Init()DrawClock(160)tracer(True)Tick()mainloop() # mainloop則是主窗口的成員函數,# 開始接收鼠標的和鍵盤的操作。你現在就能夠通過鼠標縮放以及關閉這個窗口了。if __name__ == "__main__":main()代碼運行效果圖:
總結
以上是生活随笔為你收集整理的Python中Turtle绘图函数-绘制时钟程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 全排列算法的思想
- 下一篇: leetcode hot100(第二部分