Python Turtle繪製動態時鐘

2021-10-01 08:53:22 字數 3190 閱讀 8642

# -*-coding=utf-8

import turtle

from datetime import *

# 抬起畫筆,向前運動一段距離放下

def skip(step):

turtle.penup()

turtle.forward(step)

turtle.pendown()

def mkhand(name, length):

# 註冊turtle形狀,建立表針turtle

turtle.reset()

skip(-length * 0.1)

# 開始記錄多邊形的頂點。當前的烏龜位置是多邊形的第乙個頂點。

turtle.begin_poly()

turtle.forward(length * 1.1)

# 停止記錄多邊形的頂點。當前的烏龜位置是多邊形的最後乙個頂點。將與第乙個頂點相連。

turtle.end_poly()

# 返回最後記錄的多邊形。

handform = turtle.get_poly()

turtle.register_shape(name, handform)

def init():

global sechand, minhand, hurhand, printer

# 重置turtle指向北

turtle.mode("logo")

# 建立三個表針turtle並初始化

mkhand("sechand", 135)

mkhand("minhand", 125)

mkhand("hurhand", 90)

sechand = turtle.turtle()

sechand.shape("sechand")

minhand = turtle.turtle()

minhand.shape("minhand")

hurhand = turtle.turtle()

hurhand.shape("hurhand")

for hand in sechand, minhand, hurhand:

hand.shapesize(1, 1, 3)

hand.speed(0)

# 建立輸出文字turtle

printer = turtle.turtle()

# 隱藏畫筆的turtle形狀

printer.hideturtle()

printer.penup()

def setupclock(radius):

# 建立表的外框

turtle.reset()

turtle.pensize(7)

for i in range(60):

skip(radius)

if i % 5 == 0:

turtle.forward(20)

skip(-radius - 20)

skip(radius + 20)

if i == 0:

turtle.write(int(12), align="center", font=("courier", 14, "bold"))

elif i == 30:

skip(25)

turtle.write(int(i/5), align="center", font=("courier", 14, "bold"))

skip(-25)

elif (i == 25 or i == 35):

skip(20)

turtle.write(int(i/5), align="center", font=("courier", 14, "bold"))

skip(-20)

else:

turtle.write(int(i/5), align="center", font=("courier", 14, "bold"))

skip(-radius - 20)

else:

turtle.dot(5)

skip(-radius)

turtle.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 + minute / 60.0

sechand.setheading(6 * second)

minhand.setheading(6 * minute)

hurhand.setheading(30 * hour)

turtle.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()

turtle.tracer(true)

# 100ms後繼續呼叫tick

turtle.ontimer(tick, 100)

def main():

# 開啟/關閉龜動畫,並為更新圖紙設定延遲。

turtle.tracer(false)

init()

setupclock(160)

turtle.tracer(true)

tick()

turtle.mainloop()

if __name__ == "__main__":

main()

python turtle 繪製創意梅花

author 魏振東 data 2019.10.25 func 繪製創意圖形 from turtle import from random import 畫雪花 defdrawsnow hideturtle pensize 2 for i in range 20 pencolor white pen...

Python turtle蟒蛇繪製案例

mooc教程 北理 蟒蛇例項 庫的使用 import 庫名 法二 from 庫名 import 法三 import 庫名 as 庫別名 推薦使用 import turtle turtle.setup width,height,startx,starty setup 設定窗體大小及位置 非必須 tur...

Qt繪製動態曲線

ifndef qlinewidget h define qlinewidget h include include include include include include include include include include include include include incl...