使用python寫一個動態時鐘的代碼以及如何刷新項目

<code>import turtle                 # 導入繪圖海龜模塊
import datetime # 導入日期時間模塊


# 移動一段距離

def skip(distance): # 移動方法,不留移動痕跡

turtle.penup() # 抬筆不繪製

turtle.forward(distance) # 移動指定距離

turtle.pendown() # 落筆移動繪製


def draw_clock_dial(): # 繪製錶盤的方法

turtle.reset() # 刪除圖形歸位

turtle.hideturtle() # 隱藏箭頭

for i in range(60): # 循環執行60次,一圈為360度所以每一秒的角度為6度

skip(160) # 移動160,相當於錶盤圓的半徑

# 每5秒繪製一個小時刻度

if i % 5 == 0:

turtle.pensize(7) # 刻度大小

# 畫時鐘

turtle.forward(20) # 小時刻度的長度為20

skip(-20) # 復原小時刻度的位置

else:

turtle.pensize(1) # 將畫筆大小設置為1

turtle.dot() # 繪製分鐘刻度的小圓點

skip(-160) # 回到中心位置

turtle.right(6) # 向右旋轉6度


def get_week(t): # 獲取星期的方法

week = ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期日']

return week[t.weekday()] # 返回當天的星期


def create_pointer(length, name): # 創建指針方法

turtle.reset() # 刪除圖形歸位

skip(-length * 0.1) # 抬筆移動指定距離

turtle.begin_poly() # 記錄多邊形

turtle.forward(length * 1.1) # 繪製指定長度的指針

turtle.end_poly() # 停止記錄多邊形

# 註冊多邊形狀

turtle.register_shape(name, turtle.get_poly())


def init_pointer(): # 初始化指針

global secHand, minHand, hurHand, printer

turtle.mode("logo") # 重置Turtle指向上

create_pointer(135,"secHand") # 創建秒針圖形

create_pointer(110,"minHand") # 創建分針圖形

create_pointer(90,"hurHand") # 創建時針圖形

secHand = turtle.Turtle() # 創建秒針turtle對象

secHand.shape("secHand") # 創建指定秒針名稱的形狀

minHand = turtle.Turtle() # 創建分針turtle對象

minHand.shape("minHand") # 創建指定分針名稱的形狀

hurHand = turtle.Turtle() # 創建時針turtle對象

hurHand.shape("hurHand") # 創建指定時針名稱的形狀

for hand in secHand, minHand, hurHand: # 循環遍歷三個指針

hand.shapesize(1, 1, 5) # 設置形狀拉伸大小和輪廓線

hand.speed(0) # 設置速度為最快

printer = turtle.Turtle() # 創建繪製文字的Turtle對象

printer.hideturtle() # 隱藏箭頭

printer.penup() # 抬筆


def move_pointer(): # 移動指針的方法

# 不停的獲取時間

t = datetime.datetime.today()

second = t.second + t.microsecond * 0.000001 # 計算移動的秒

minute = t.minute + second/60 # 計算移動的分


hour = t.hour + minute/60 # 計算移動的小時

secHand.setheading(6*second) # 設置秒針的角度

minHand.setheading(6*minute) # 設置分針的角度

hurHand.setheading(30*hour) # 設置時針的角度

turtle.tracer(False) # 關閉繪畫效果

printer.forward(65) # 向上移動65

# 繪製星期

printer.write(get_week(t), align="center",font=("Courier", 14, "bold"))

printer.back(130) # 倒退130

# 繪製年月日

printer.write(t.strftime('%Y-%m-%d'), align="center",font=("Courier", 14, "bold"))

printer.home() # 歸位

turtle.tracer(True) # 開啟繪畫效果

turtle.ontimer(move_pointer, 10) # 10毫秒後調用move_pointer()方法


if __name__ == '__main__':

turtle.setup(450, 450) # 創建窗體大小

init_pointer() # 調用初始化指針的方法

turtle.tracer(False) # 關閉繪畫效果

draw_clock_dial() # 繪製錶盤

move_pointer() # 調用移動指針的方法


turtle.mainloop() # 不關閉窗體
/<code>



分享到:


相關文章: