본문 바로가기
프로그램

[파이썬] 문제 : 터틀(turtle)로 브라질 국기 그리기(png 사용)

by 오디세이99 2023. 4. 8.
728x90
반응형

기본적으로 turtle에서는 gif 파일만 읽어들일 수 있습니다.

tkinter를 사용하면 png 파일도 읽어들일 수 있습니다.

 

브라질 국기를 만들기 위해 png 파일을 만듭니다. 배경이 투명하게 만듭니다.(하단에 파일 첨부 있습니다)

이미지의 resize가 필요하지 않으면 다음과  같이 할 수 있습니다.

cv = t.getcanvas()
img = tk.PhotoImage(file='0011.png')
cv.create_image(0, 0, image=img)

 

turtle로 그린 원의 크기에 맞추기 위해서 resize까지 하는 코드 입니다.

import turtle as t
import tkinter as tk              # turtle에 png 파일을 붙이기 위해 사용
import PIL                        # 이미지 resize를 위해 사용
from PIL import Image, ImageTk   # 이미지 resize를 위해 사용
 
s=t.Screen()
t.setup(900,660)
t.speed(0)
t.title('Brazil')

# 국기 규격 800:560 (10:7_가로:세로)
t.begin_fill()
t.fillcolor('#009C3B')
t.penup()
t.goto(-400,280)
t.pendown()
t.fd(800)
t.rt(90)
t.fd(560)
t.rt(90)
t.fd(800)
t.rt(90)
t.fd(560)
t.end_fill()

# 중앙 마름모
t.penup()
t.home()
t.begin_fill()
t.pencolor('#FFDF00')
t.fillcolor('#FFDF00')
t.goto(0,204)
t.rt(60)
t.pendown()
t.goto(324,0)
t.rt(60)
t.goto(0,-204)
t.rt(60)
t.goto(-324,0)
t.rt(60)
t.goto(0,204)
t.end_fill()

# 중앙 원
t.penup()
t.goto(0,-140)
t.begin_fill()
t.pencolor('#FFFFFF')
t.fillcolor('#FFFFFF')
t.pendown()
t.setheading(0)
t.circle(140)
t.end_fill()

t.penup()
t.goto(0,0)                                   # 이미지 추가하기 위해 0 위치로 이동
cv = t.getcanvas()                            # turtle의 canvas 추출
img = Image.open("0011.png")                  # PIL의 png image 로드
w = 280
h = 280
img = img.resize((h,w), PIL.Image.ANTIALIAS)  # 원의 크기에 맞도록 resize
photo = ImageTk.PhotoImage(img)               # PIL의 image를 tkinter용으로 변환
cv.create_image(0, 0, image=photo)            # turtle의 canvas에 이미지 추가

t.done()

0011.png
0.03MB

728x90
반응형

댓글