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()
728x90
반응형
'프로그램' 카테고리의 다른 글
| [파이썬] 문제 : pandas 학생 성적 처리(index, groupby, pivot, mean, median, count) (0) | 2023.04.08 |
|---|---|
| [파이썬] 문제 : 성적 계산하기 (0) | 2023.04.08 |
| [파이썬] 문제 : N개의 피보나치 수열의 합 계산 (0) | 2023.04.07 |
| [파이썬] 문제 : 블랙잭 게임 (0) | 2023.04.07 |
| [파이썬] 문제 : 터틀(turtle)로 세로줄 3개 그리기 (0) | 2023.04.07 |

댓글