미술을 할 때 기본 바탕이 되는 것은 종이도 있지만, 많은 작가들이 캔버스를 주 재료로 쓴다.
천으로 만들어졌기 때문에 물감을 겹겹이 덧칠해도 무리가 없기 때문이다.
Canvas widget은 정말 Canvas와 똑같다.
여러 레이어를 겹겹이 쌓아도 아무런 문제가 없다.
이미지에 하나를 그리고, 그 위에 또 하나를 그리고 또 그려도 괜찮다는 거다.
그런 원리를 바탕으로 캔버스 위젯을 사용해보자.
기본환경 설정
from tkinter import *
window = Tk()
window.title("bts")
window.mainloop()
canvas 객체 생성
파라미터로 width 폭, height 높이가 오며
픽셀 단위의 값이 된다.
canvas = Canvas(width=371, height=371)
PhotoImage(file = ?)
이미지 불러오기
bts_img = PhotoImage(file="bts.png")
create_image()
이미지 추가하기
canvas.create_image(185, 185, image=bts_img)
pack()
이미지 배치하기
canvas.pack()
subsample()
이미지 사이즈를 줄인다.
파라미터로 x,y 정수가 오는데
1/x,1/y배 만큼 줄인다.
smaller_image = bts_img.subsample(10, 10)
zoom()
이미지 사이즈를 늘린다.
파라미터로 x, y 정수가 오는데
x, y배 만큼 늘린다.
config(padx=?, pady=?)
윈도우 여백주기
window.config(padx=100, pady=50)
잘린 부분 없도록, canvas 크기와 create_image 크기 조절하기
from tkinter import *
window = Tk()
window.title("bts")
window.config(padx=100, pady=50)
canvas = Canvas(width=380, height=380)
bts_img = PhotoImage(file="bts.png")
canvas.create_image(190, 190, image=bts_img)
canvas.pack()
window.mainloop()
create_text(x=?, y=?, text=?, fill=?, font=?)
캔버스 위에 글씨를 쓴다.
x, y: 위치
fill: 색깔
font: 글씨체, 글씨크기, 글씨효과
canvas.create_text(190,60, text="00:00", fill = "purple", font =("Courier", 40, "bold"))
bg 키워드 인자
배경색깔을 준다.
config의 파라미터 bg 키워드인자를 활용한다.
(색깔의 헥스코드를 가져오는 방법을 알고싶다면----> 클릭)
PINK = "#EBC7E8"
window.config(padx=100, pady=50, bg=PINK)
사진 속 배경도 바꾸고 싶다면,
canvas의 bg 키워드 인자를 이용한다.
<최종코드>
PINK = "#EBC7E8"
from tkinter import *
window = Tk()
window.title("bts")
window.config(padx=100, pady=50)
canvas = Canvas(width=380, height=380)
bts_img = PhotoImage(file="bts.png")
# larger_image = bts_img.zoom(2,2)
# smaller_image = bts_img.subsample(10, 10)
canvas.create_image(190, 190, image=bts_img, bg = PINK)
canvas.create_text(190,60, text="00:00", fill = "purple", font =("Courier", 40, "bold"))
canvas.pack()
'파이썬 > 파이썬(python) 중급' 카테고리의 다른 글
[28-4 파이썬] tkinter 타이머 만들기 fg, math.floor, itemconfig(), after(), 재귀호출, command (0) | 2022.09.17 |
---|---|
[28-3 파이썬] 이미지에 색깔 넣기(배경, 경계) (0) | 2022.09.17 |
[28-1 파이썬] 컬러헌트에서 색깔 찾기, 헥스코드 (0) | 2022.09.17 |
[27-8 파이썬] Tkinter로 m2 평 변환기 만들기, 데이터유형 변경하기 (0) | 2022.09.15 |
[27-7 파이썬] Tkinter 레이아웃 매니저 pack(), place(), grid(), 여백주기 padding (0) | 2022.09.15 |