정보통신기술(ICT)

파이썬 코드로 한국이 가진 오방색을 나타내는 방식

해머슴 2024. 11. 13. 11:25
import tkinter as tk
from tkinter import ttk
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg

# 오방색의 RGB와 CMYK 값 정의
obang_colors = {
    "Blue": {"RGB": (0, 66, 119), "CMYK": (1, 0.44, 0, 0.53)},
    "Red": {"RGB": (255, 0, 0), "CMYK": (0, 1, 1, 0)},
    "Yellow": {"RGB": (255, 223, 0), "CMYK": (0, 0.13, 1, 0)},
    "White": {"RGB": (255, 255, 255), "CMYK": (0, 0, 0, 0)},
    "Black": {"RGB": (0, 0, 0), "CMYK": (0, 0, 0, 1)}
}

# GUI 창 설정
root = tk.Tk()
root.title("오방색 RGB/CMYK 그래프")
root.geometry("500x400")

# 색상 선택 콤보박스
selected_color = tk.StringVar()
color_combobox = ttk.Combobox(root, textvariable=selected_color)
color_combobox["values"] = list(obang_colors.keys())
color_combobox.grid(column=0, row=0, padx=10, pady=10)

# 그래프 생성 함수
def plot_color():
    color = selected_color.get()
    if color not in obang_colors:
        return

    rgb_values = obang_colors[color]["RGB"]
    cmyk_values = obang_colors[color]["CMYK"]

    # Matplotlib 그래프 설정
    fig, ax = plt.subplots(1, 2, figsize=(8, 4))

    # RGB 막대 그래프
    rgb_normalized = [(rgb / 255) for rgb in rgb_values]  # RGB 값을 0-1 사이로 정규화
    ax[0].bar(["R", "G", "B"], rgb_values, color=[(rgb_normalized[0], rgb_normalized[1], rgb_normalized[2])])
    ax[0].set_title(f"{color} - RGB")
    ax[0].set_ylim(0, 255)

    # CMYK 막대 그래프
    ax[1].bar(["C", "M", "Y", "K"], [value * 100 for value in cmyk_values], color="cyan")
    ax[1].set_title(f"{color} - CMYK")
    ax[1].set_ylim(0, 100)

    # Tkinter 창에 그래프 표시
    canvas = FigureCanvasTkAgg(fig, root)
    canvas.get_tk_widget().grid(column=0, row=2, columnspan=2)
    canvas.draw()

# 버튼 생성
plot_button = tk.Button(root, text="그래프 그리기", command=plot_color)
plot_button.grid(column=1, row=0, padx=10, pady=10)

root.mainloop()