# !/urs/bin/ python # _*_ coding: utf-8 # !/usr/bin/env python # -*- coding:utf-8 -*- import turtle import datetime # 移動一段距離 def skip(distance): """ 移動烏龜一段距離,不留痕跡 :param distance: 像素 :return: """ turtle.penup() turtle.forward(distance) turtle.pendown() def draw_clock(): # 先畫表盤 # 先畫點 # 移動一段距離,畫一個點,然后退回 # 轉動6°,再移動一段距離,畫一個點,然后退回 # 循環 60次 # 讓烏龜的方向默認向上 turtle.reset() turtle.hideturtle() for i in range(60): skip(160) # 根據 5格一個時鍾 if i % 5 == 0: turtle.pensize(7) # 畫時鍾 turtle.forward(20) if i == 0: turtle.write(12, align='center', font=('Courier', 14, 'bold')) elif i == 25 or i == 30 or i == 35: skip(25) turtle.write(int(i / 5), align='center', font=('Courier', 14, 'bold')) skip(-25) else: turtle.write(int(i / 5), align='center', font=('Courier', 14, 'bold')) skip(-20) else: turtle.pensize(1) turtle.dot() skip(-160) turtle.right(6) def get_week(t): week = ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期日'] return week[t.weekday()] def create_hand(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()) hand = turtle.Turtle() hand.shape(name) hand.shapesize(1, 1, 3) return hand def run(): # 不停的獲取時間 t = datetime.datetime.today() bob.forward(65) bob.write(get_week(t), align='center', font=('Courier', 14, 'bold')) bob.back(130) bob.write(t.strftime('%Y-%m-%d'), align='center', font=('Courier', 14, 'bold')) bob.home() # 指針移動 second = t.second + t.microsecond * 0.000001 minute = t.minute + second / 60 hour = t.hour + minute / 60 turtle.tracer(True) second_hand.setheading(6 * second) minute_hand.setheading(6 * minute) hour_hand.setheading(30 * hour) turtle.ontimer(run, 200) if __name__ == '__main__': # 畫秒針,分針,時針 turtle.mode('logo') turtle.hideturtle() global second_hand, minute_hand, hour_hand, bob second_hand = create_hand(135, 'second_hand') minute_hand = create_hand(125, 'minute_hand') hour_hand = create_hand(90, 'hour_hand') # 創建一個新的turtle對象,去循環的操作 bob = turtle.Turtle() bob.hideturtle() bob.penup() turtle.tracer(False) draw_clock() run() turtle.mainloop()