Tkinter 애플리케이션에서는 PhotoImage(이미지 경로) 함수를 사용하여 이미지를 불러올 수 있습니다. 이 함수는 이미지의 위치를 매개변수로 받아 윈도우 객체 위에 해당 이미지를 표시합니다.
그런데 버튼에 이미지를 추가하면 일반적으로 이미지가 버튼 위에 표시되면서 기존 버튼 텍스트가 가려지는 문제가 발생합니다. 따라서 버튼의 텍스트와 이미지가 서로 어우러지게 배치하려면 compound 속성을 활용해야 합니다. 이 속성은 LEFT, RIGHT, TOP, BOTTOM 네 가지 위치 인자 중 하나를 받으며, 각각 버튼 위에서 이미지가 차지할 위치를 정의합니다.
예제 코드
다음 예제에서는 compound 속성을 사용하여 버튼 안에 이미지와 텍스트를 함께 배치하는 방법을 보여줍니다.
# tkinter 라이브러리 임포트
from tkinter import *
from PIL import Image, ImageTk
# Tkinter 프레임(윈도우) 인스턴스 생성
win = Tk()
# 윈도우 크기 설정
win.geometry("750x250")
# 창을 닫는 함수 정의
def close_win():
win.destroy()
# 이미지 불러오기
image = Image.open('preview.png')
# 이미지 크기 조정
image = image.resize((50, 50), Image.ANTIALIAS)
# 이미지를 PhotoImage 객체로 변환
img = ImageTk.PhotoImage(image)
# 안내 라벨 생성
Label(win, text="아래 버튼을 클릭하면 창이 닫힙니다", font=('Aerial 15 bold')).pack(pady=20)
# 이미지와 텍스트가 함께 있는 버튼 생성
button = Button(win, text="클릭하세요", font=('Helvetica 15 bold'),
image=img, compound=LEFT, command=close_win)
button.pack()
win.mainloop()실행 결과
위 코드를 실행하면 이미지와 텍스트 라벨이 함께 포함된 버튼이 있는 창이 화면에 나타납니다. 이때 compound 옵션을 LEFT로 지정했기 때문에 이미지가 버튼 텍스트의 왼쪽에 배치됩니다. 버튼을 클릭하면 close_win() 함수가 호출되어 창이 닫히게 됩니다.
