반응형
개요
wxPython에서는 색상데이터베이스(wx.ColourDatabase())에 바로 불러다 쓸 수 있는 기본 색상 테이블을 제공한다. 색상데이터베이스를 이용하면 색상 이름으로 색상값(R,G,B,alpha) 값을 불러올 수 있다. 각 값은 0~255 정수값을 가질 수 있고, alpha는 투명도이다.
2023.04.08 - [Matplotlib] - [Matplotlib] RGB, HEX 기본 색상 코드표
2023.04.04 - [Plotly] - [Plotly] CSS Named Colors - 네임드 색상표
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()
도움되셨다면 하트(♥) 부탁드리고, 더 궁금한 사항은 댓글로 남겨주세요 :)
반응형
'wxPython' 카테고리의 다른 글
파이썬 GUI, 플렉시 그리드 사이저 wx.FlexiGridSizer (0) | 2023.03.12 |
---|---|
파이썬 GUI, 다중 창 인터페이스 wx.MDIParentFrame (4) | 2023.03.11 |
파이썬 GUI, 그리드사이저 wx.GridSizer (0) | 2023.02.26 |
파이썬 GUI, 박스사이저 추가예제3 wx.BoxSizer (0) | 2023.02.26 |
파이썬 GUI, 박스사이저 추가예제2 wx.BoxSizer (0) | 2023.02.26 |