색상 그라데이션(color gradient)이란 위치에 따라 색상이 연속적으로 변하는 범위를 의미합니다. 예를 들어 애플리케이션 안에 여러 색상이 자연스럽게 이어지는 직사각형 형태의 눈금(그라데이션 바)을 만들고 싶다면, 다음 단계를 따라 구현할 수 있습니다.
Canvas 위젯으로 직사각형 생성 — 캔버스 위젯을 만들고 원하는 너비와 높이를 지정합니다.
색상 채우기 함수 정의 — RGB 값을 받아 16진수(hex) 색상 코드 문자열로 변환하는 함수를 작성합니다.
색상 범위 반복 처리 — 색상 범위를 순회하면서 각 위치에 맞는 색으로 직사각형을 채워 나갑니다.
예제 코드
# 필요한 라이브러리 임포트
from tkinter import *
from tkinter import ttk
# tkinter 프레임 인스턴스 생성
win = Tk()
# 윈도우 크기 및 제목 설정
win.geometry("700x350")
win.title("Gradient")
# RGB 값을 16진수 색상 코드로 변환하는 함수 정의
def rgb(r, g, b):
return "#%s%s%s" % tuple([hex(c)[2:].rjust(2, "0")
for c in (r, g, b)])
# 그라데이션을 표시할 캔버스 생성
gradient = Canvas(win, width=255 * 2, height=25)
gradient.pack()
# 색상 범위를 반복하며 직사각형을 rgb(r, g, 0) 값으로 채우기
for x in range(0, 256):
r = x * 2 if x < 128 else 255
g = 255 if x < 128 else 255 - (x - 128) * 2
gradient.create_rectangle(x * 2, 0, x * 2 + 2, 50,
fill=rgb(r, g, 0), outline=rgb(r, g, 0))
win.mainloop()코드 설명
rgb() 함수는 빨강(R), 초록(G), 파랑(B) 세 개의 정수 값을 받아 Tkinter에서 인식할 수 있는 #RRGGBB 형식의 16진수 문자열로 변환합니다. 이후 for 루프가 0부터 255까지 반복하면서, x 값이 128보다 작을 때는 빨간색 성분을 점점 줄이고 초록색을 최대로 유지하며, 128 이상일 때는 초록색 성분을 서서히 감소시킵니다. 그 결과 빨간색 → 노란색 → 녹색으로 이어지는 매끄러운 그라데이션이 완성됩니다.
실행 결과
위 코드를 실행하면 빨간색에서 시작해 노란색을 거쳐 녹색으로 자연스럽게 전환되는 그라데이션 눈금이 창에 표시됩니다.
