python turtle 라 이브 러 리 로 시계 그리 기

3217 단어 pythonturtle클 록
Python 함수 라 이브 러 리 가 많 고 계속 업데이트 되 고 있 기 때문에 이 함수 라 이브 러 리 를 배 우 는 가장 효과 적 인 방법 은 Python 공식 문 서 를 읽 는 것 입 니 다.Google 과 바 이 두 의 도움 을 동시에 받 습 니 다.
본 고 에서 소개 한 turtle 라 이브 러 리 에 대응 하 는공식 문서 주소
동적 시 계 를 그 리 는 기본 적 인 사고방식 은 다음 과 같다.(대상 을 대상 으로 하 는 프로 그래 밍)
turtle 개체 5 개 사용 하기
1 turtle:외관 판 그리 기
3 개 turtle:시 뮬 레이 션 바늘 행동
1 개의 turtle:디스크 에 있 는 텍스트 출력
실시 간 시간 에 ontimer()함 수 를 사용 하여 디스크 화면 을 업데이트 합 니 다.효 과 는 다음 과 같 습 니 다.
관련 함수 의 사용 은 프로그램 에서 상세 한 설명 을 했 습 니 다.코드 는 다음 과 같 습 니 다.

# -*- coding: utf-8 -*-
"""
Created on Fri Jan 12 10:43:55 2018

@author: Administrator
"""

from turtle import *
from datetime import *

def skip(step):
 penup()
 forward(step)
 pendown()

def mkhand(name,length):
 #  turtle  ,    turtle
 reset()
 skip(-length*0.1)
 begin_poly()
 forward(length*1.1)
 end_poly()
 handform=get_poly()
 register_shape(name,handform)

def init():
 global sechand,minhand,hurhand,printer
 mode("logo")
 #  turtle   
 #      turtle    
 mkhand("sechand",125)
 mkhand("minhand",130)
 mkhand("hurhand",90)
 sechand=Turtle()
 sechand.shape("sechand")
 minhand=Turtle()
 minhand.shape("minhand")
 hurhand=Turtle()
 hurhand.shape("hurhand")
 for hand in sechand,minhand,hurhand:
  hand.shapesize(1,1,3)
  hand.speed(0)
 #      turtle
 printer = Turtle()
 printer.hideturtle()
 printer.penup()

def setupclock(radius):
 #      
 reset()
 pensize(7)
 for i in range(60):
  skip(radius)
  if i %5==0:
   forward(20)
   skip(-radius-20)
  else:
   dot(5)
   skip(-radius)
  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+second/60.0
 sechand.setheading(6*second)
 minhand.setheading(6*minute)
 hurhand.setheading(30*hour)
 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()
 tracer(True)
 ontimer(tick,100)#100ms     tick

def main():
 tracer(False)
 init()
 setupclock(160)
 tracer(True)
 tick()
 mainloop()
main()
실행 결과

이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기