Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Tkinter로 빨간색에서 녹색까지 이어지는 그라데이션 눈금 만드는 방법

색상 그라데이션(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 이상일 때는 초록색 성분을 서서히 감소시킵니다. 그 결과 빨간색 → 노란색 → 녹색으로 이어지는 매끄러운 그라데이션이 완성됩니다.

실행 결과

위 코드를 실행하면 빨간색에서 시작해 노란색을 거쳐 녹색으로 자연스럽게 전환되는 그라데이션 눈금이 창에 표시됩니다.

Tkinter로 빨간색에서 녹색까지 이어지는 그라데이션 눈금 만드는 방법