본문 바로가기
게임 제작 관련/개발환경(프로그램)

Python Turtle 모듈 응용(디지털 시계 만들기)

by 김바보 2022. 10. 14.

1. 헷갈리는 import turtle 하는법 정리

import turtle 

 - 모듈 불러오기

 - 사용시 turtle.left() 이런식으로

 

 

import turtle as t

 - 모듈 불러오고, turtle을 t로 줄여서 사용하기로 함

 - t.left()

 

 

+ turtle 펜을 여러개 설정해야 할 경우 as t를 쓰는 것 보다는

t1 = turtle.Turtle()   #원을 그리는 거북이

t2 = turtle.Turtle()   #삼각형 그리는 거북이

이런식으로 펜의 구분을 위해 따로 불러와주자.

 

 

from turtle import *

 - 모듈 불러오고, turtle 생략

 - left()

 

 

 

 

2. turtle 모듈 + while true 반복문 + 여러가지 라이브러리 응용

#!pip install keyboard
#!를 붙이는건 (아마도) jupyter notebook에서 작동하는 스크립트인 것으로 알고 있음
#keyboard는 대부분의 파이썬 작동 사이트에서 안깔려 있을 확률이 높으니 설치해준다.
#다른 모듈도 없다고 한다면 위의 구문을 사용해 바꿔서 깔아줄 것


## 필요한 모듈 불러오기 ##
import time
import datetime as dt
import turtle
import keyboard


## 펜 설정 & 거북이 숨기기 ##
t1 = turtle.Turtle()   #디지털 시계 디스플레이
t2 = turtle.Turtle()   #사각형 시계 박스
t3 = turtle.Turtle()    #전체 화면
t1.hideturtle()
t2.hideturtle()
t3.hideturtle()


## datetime모듈로 현재시각 불러오기 ##
sec = dt.datetime.now().second
min = dt.datetime.now().minute
hr = dt.datetime.now().hour


## t2 스타일, 자리 설정 ##
t2.shape('turtle')
t2.pensize(3)
t2.color('black')
t2.penup()
t2.goto(-20,0)
t2.pendown()


## t2로 사각형 박스 그리기 ##
## 가로 300, 세로50인 박스 ##
t2.st()
t2.forward(150) 
t2.right(90)
t2.forward(50)
t2.right(90)
t2.forward(300)
t2.right(90)
t2.forward(50)
t2.right(90)
t2.forward(150)
t2.ht()


## 시간 표시해줄 t1 위치 옮기기 ##
t1.left(180)
t1.forward(120)
t1.left(90)
t1.forward(45)


## 현재 시각 갱신 ##
while True:
    t1.clear()      #1초 전에 그린 것 삭제
    t1.write(str(hr).zfill(2) + "시 " + str(min).zfill(2) + "분 " + str(sec).zfill(2) + "초 ", 
    font=("Arial Narrow", 25, "bold")) #zfill() = 0 붙여주는 함수, 없어도 됨
    time.sleep(1)   #1초마다 write 해주기 위해서, 안해주면 1/1000초? 씩 받아온다...
    sec += 1        #1초가 지나면 sec에 1을 더해줌
    
    if sec == 60:   #60초가 되면
        sec = 0     #0초로 돌리고
        min += 1    #1분 추가
        
    if min == 60:
        min = 0
        hr += 1
        
    if hr == 24:
        hr = 0
    
    if keyboard.is_pressed("s"):     #keyboard 모듈 사용해서 키보드 s를 누르면
        print("종료 되었습니다.")    #출력
        break                        #while True 반복문 종료

 

결과 화면이다. 사진이어서 안나오지만 43 -> 44 -> 45초 이렇게 바뀌며 진짜 디지털 시계의 역할을 한다.

keyboard 모듈로 인해 s를 누르면 종료된다.

 

 

## space를 누르면 종료하는 구문 ##
def stop():
    t1.reset()
    t2.reset()
    t3.reset()
    
t1.listen()
t1.onkeypress(stop, "space")

원래는 이렇게 turtle 모듈에 있는 onkeypress를 사용해 정지 시키려고 했다.

그러나 여러개의 터틀을 사용하고 있어서 그런지 t1만으로는 정지가 안된다.

 

 

댓글