Tkinter의 Canvas 위젯은 이미지 추가, 도형 생성 및 그리기, 애니메이션 효과 구현 등 다양한 용도로 활용할 수 있습니다. Canvas에서 제공하는 내장 함수와 메서드를 사용하면 텍스트를 손쉽게 만들어 화면에 표시할 수도 있습니다.
캔버스에 텍스트를 생성하려면 create_text(x, y, text, **options) 메서드를 사용합니다. 텍스트 주위에 외곽선을 추가하려면 먼저 텍스트를 감싸는 바운딩 박스(bounding box)를 만들어야 합니다. 바운딩 박스 속성은 보이지 않는 상자를 위젯과 연결해 주며, 이를 통해 텍스트 뒤에 사각형을 배치할 수 있습니다.
사각형을 생성한 다음에는 이를 텍스트 뒤로 보내고, tag_raise 메서드로 텍스트가 사각형 위에 표시되도록 순서를 조정합니다. 이때 사각형에는 캔버스 항목을 둘러싸는 outline(외곽선) 속성을 반드시 지정해야 합니다.
예제 코드
# 필요한 라이브러리 임포트
from tkinter import *
# tkinter 프레임 또는 윈도우 인스턴스 생성
win = Tk()
# 윈도우 크기 설정
win.geometry("700x350")
# 캔버스 위젯 생성
canvas = Canvas(win, bg="blue3")
canvas.pack()
# 캔버스에 텍스트 생성
text = canvas.create_text(100, 200, text="This works only in canvas",
font=('Calibri 18'), anchor="w", fill="white")
# 텍스트 주위에 바운딩 박스 생성
bbox = canvas.bbox(text)
# 바운딩 박스 영역에 사각형 생성
rect = canvas.create_rectangle(bbox, outline="yellow",
fill="black", width=5)
# 사각형 위로 텍스트를 올림
canvas.tag_raise(text, rect)
win.mainloop()실행 결과
위 코드를 실행하면 캔버스에 미리 정의된 텍스트가 포함된 창이 나타나며, 텍스트 주위에 노란색 외곽선이 함께 표시되는 것을 확인할 수 있습니다.
