본문 바로가기

wxPython

파이썬 GUI, 기본 색상표 wx.ColourDatabase

반응형

wxPython 기본제공 색상표

개요 

    wxPython에서는 색상데이터베이스(wx.ColourDatabase())에 바로 불러다 쓸 수 있는 기본 색상 테이블을 제공한다. 색상데이터베이스를 이용하면 색상 이름으로 색상값(R,G,B,alpha) 값을 불러올 수 있다. 각 값은 0~255 정수값을 가질 수 있고, alpha는 투명도이다. 
 
2023.04.08 - [Matplotlib] - [Matplotlib] RGB, HEX 기본 색상 코드표

 

[Matplotlib] RGB, HEX 기본 색상 코드표

개요 ** 본 글은 "색상표"에 대한 요구에 따라 기존 포스팅(https://hexa-coding.tistory.com/23)에 덧붙여 추가로 작성하였습니다. 결과값은 RGB, HEX, 그리고 색상이름 세 가지로 출력하였는데 혹시 이 외에

hexa-coding.tistory.com

2023.04.04 - [Plotly] - [Plotly] CSS Named Colors - 네임드 색상표

 

CSS 기본 색상표

개요 Plotly에서 제공하는 네임드 컬러를 차트에 출력해 보자. Plotly CSS Named Colors 아래는 Plotly에서 제공하는 색상이름이다. 기본적으로 제공되기 때문에 RGB값을 모르더라도 색상 이름만 가지고 해

hexa-coding.tistory.com

 

    

 

wx.ColourDatabase()

    색상데이터베이스(wx.ColourDatabase) Find() 메소드를 이용하면 미리 지정된 색상 이름으로 RGB+alpha 색상값을 불러올 수 있다. 

print(wx.ColourDatabase().Find('RED'))
결과: (255,0,0,255)

 
    데이터베이스에는 기본적으로 17*4 = 68개의 색상이 저장되어 있고, 필요에 따라 데이터베이스에 색상을 추가할 수도 있다. 

wx.ColourDatabase().AddColour(colourName='colourName', colour=(255,255,255,255))

 
 

예제 

    아래는 그리드사이저로 17*4 행렬의 버튼배열을 만들고, 각 버튼의 배경색을 버튼 레이블에 해당하는 색상으로 변경한 예제이다. 문자열 색상을 색상값으로 어떻게 변환하는지 확인해보자. 

반응형
import wx
import numpy as np

class Example(wx.Frame):
    def __init__(self, parent, id):
        wx.Frame.__init__(self,parent,id,'wxColourDatabase Window', size=(800,800))

        panel=wx.Panel(self)

        # wxPython에서 기본 제공하는 색상 DataBase (총 17*4)
        WxColourDB = np.array([['AQUAMARINE', 'FIREBRICK', 'MEDIUM FOREST GREEN', 'RED'],
                              ['BLACK', 'FOREST GREEN', 'MEDIUM GOLDENROD', 'SALMON'],
                              ['BLUE', 'GOLD', 'MEDIUM ORCHID', 'SEA GREEN'],
                              ['BLUE VIOLET', 'GOLDENROD', 'MEDIUM SEA GREEN', 'SIENNA'],
                              ['BROWN', 'GREY', 'MEDIUM SLATE BLUE', 'SKY BLUE'],
                              ['CADET BLUE', 'GREEN', 'MEDIUM SPRING GREEN', 'SLATE BLUE'],
                              ['CORAL', 'GREEN YELLOW', 'MEDIUM TURQUOISE', 'SPRING GREEN'],
                              ['CORNFLOWER BLUE', 'INDIAN RED', 'MEDIUM VIOLET RED', 'STEEL BLUE'],
                              ['CYAN', 'KHAKI', 'MIDNIGHT BLUE', 'TAN'],
                              ['DARK GREY', 'LIGHT BLUE', 'NAVY', 'THISTLE'],
                              ['DARK GREEN', 'LIGHT GREY', 'ORANGE', 'TURQUOISE'],
                              ['DARK OLIVE GREEN', 'LIGHT STEEL BLUE', 'ORANGE RED', 'VIOLET'],
                              ['DARK ORCHID', 'LIME GREEN', 'ORCHID', 'VIOLET RED'],
                              ['DARK SLATE BLUE', 'MAGENTA', 'PALE GREEN', 'WHEAT'],
                              ['DARK SLATE GREY', 'MAROON', 'PINK', 'WHITE'],
                              ['DARK TURQUOISE', 'MEDIUM AQUAMARINE', 'PLUM', 'YELLOW'],
                              ['DIM GREY', 'MEDIUM BLUE', 'PURPLE', 'YELLOW GREEN']])

        # 색상 이름과 색상값을 확인해보자.
        print("색상이름: "+WxColourDB[0][1])
        print("색상값: "+str(wx.ColourDatabase().Find(WxColourDB[0][1])))


        # 버튼을 담을 그리드 사이저 생성
        self.grid = wx.GridSizer(17,4,10,10)

        # 색상 배열을 1차원 배열로 쭉 폈다.
        flattened_colors = WxColourDB.flatten()

        # 버튼 리스트 생성
        btn_list = []
        for i in range(17*4):
            # 버튼의 이름을 색상으로 지정하고 버튼 배경색도 변경한다.
            btn = wx.Button(panel, -1, flattened_colors[i],
                            pos=wx.DefaultPosition, size=wx.DefaultSize)
            # 색상 이름으로 wxPython 데이터베이스에 있는 색상 값을 불러온다. (wx.ColourDatabase().Find())
            color_value = wx.ColourDatabase().Find(flattened_colors[i])
            btn.SetBackgroundColour(color_value)
            # 버튼을 리스트에 담는다.
            btn_list.append(btn)

        # 버튼을 그리드 사이저에 담는다
        for i in range(17*4):
            self.grid.Add(btn_list[i])

        panel.SetSizer(self.grid)


if __name__=="__main__":
    app = wx.App()
    frame=Example(parent=None, id=-1)
    frame.Show()
    app.MainLoop()

 
 
 
 
 
    도움되셨다면 하트(♥) 부탁드리고, 더 궁금한 사항은 댓글로 남겨주세요 :) 
 

반응형