개요
그리드(wx.grid.Grid)는 프로그램에 데이터를 엑셀과 같은 표 형식으로 보여주기에 아주 유용한 클래스이다. 정의하는 방식에 따라 사용자가 셀에 값을 직접 입력할 수도 있고, 읽기전용으로 바꾸지 못하게 할 수도 있다. 숫자 데이터는 화면에 보여줄 소수점 자릿수를 결정할 수도 있고, 셀이나 텍스트의 색상도 바꿀 수 있다.
그 밖에 제대로 커스터마이징된 표를 만들고 싶으면 wxPython 도큐먼트(https://docs.wxpython.org/wx.grid.Grid.html)를 참고하여 더 다양한 함수와 기능들을 사용해서 추상클래스로 정의할 수도 있다. 그리드 클래스는 굉장히 많은 기능과 함수를 담고 있으나 여기서는 독자에게 단순 소개를 위해서 가장 기본적인 기능들로 구성된 예제를 다룬다.
wx.grid.Grid
그리드 사용은 아래와 같이 3단계로 간단히 할 수 있다. 먼저 그리드 클래스의 오브젝트를 만들고, CreateGrid 함수를 통해 행,열을 지정해준 뒤, 그 뒤에 이어지는 코드에서는 셀 값이나 셀 속성, 행의 높이, 열의 너비 등을 원하는대로 지정해주면 된다.
# 1. 그리드 클래스 오브젝트 생성
grd = wx.grid.Grid(parent, -1)
# 2. 그리드 행, 열 개수 설정하여 생성
grd.CreateGrid(n_rows, n_cols)
# 3. 그리드 셀 값, 셀 속성 값 등 지정
grd.... (생략)
그리고 셀 안에 값을 입력할 때에는 판다스(Pandas)나 넘파이(Numpy) 처럼 표나 배열 값을 직접 한 번에 입력할 수도 있고, 본 글에서의 예제에서처럼 하나씩 차례로 입력할 수도 있다. 모두 필요한 기능이니 연재된 글을 통해 차례로 확인해보기 바란다.
예제
import wx
import wx.grid
import wx.adv
class Example(wx.Frame):
def __init__(self, parent, id):
wx.Frame.__init__(self, parent, id, '그리드 예제', size=(600, 400))
# 사용자 코드
panel = wx.Panel(self, -1)
# 그리드 클래스의 오브젝트 생성
grid = wx.grid.Grid(panel, -1)
# 그리드 행, 열 개수 설정 : 행 10개, 열 5개
grid.CreateGrid(10, 5)
# 셀 행 높이 설정 (픽셀크기)
grid.SetRowSize(0, 60)
grid.SetRowSize(1, 30)
grid.SetRowSize(2, 60)
# 열 너비 설정 (픽셀크기)
grid.SetColSize(0, 120)
grid.SetColSize(1, 100)
grid.SetColSize(2, 80)
# 셀(0,0) 값 설정
grid.SetCellValue(0, 0, '0행 0열')
grid.SetCellValue(1, 0, '1행 0열')
grid.SetCellValue(2, 0, '2행 0열')
# 읽기전용 셀 설정
grid.SetCellValue(0, 1, '(읽기전용)')
grid.SetReadOnly(0, 1)
# 색상 설정
grid.SetCellValue(1, 1, '색상설정')
grid.SetCellTextColour(1,1, wx.RED)
grid.SetCellBackgroundColour(1,1, (150,220,220))
# 컬럼 포멧 설정
grid.SetColFormatFloat(2, 6, 5) # (컬럼번호, 문자열 길이(width), 정밀도(precision))
grid.SetCellValue(0, 2, '3.1415926535')
grid.SetCellValue(1, 2, '1.2345678901')
grid.SetCellValue(2, 2, '1.4285714285')
# 그리드를 담을 박스사이저 생성
bsizer = wx.BoxSizer(wx.VERTICAL)
bsizer.Add(grid, -1, wx.ALL, 20)
panel.SetSizer(bsizer)
self.Show()
if __name__ == '__main__':
app = wx.App()
frame = Example(parent=None, id=-1)
app.MainLoop()
도움되셨다면 하트(♥) 부탁드리고, 더 궁금한 사항은 댓글로 남겨주세요 :)
'wxPython' 카테고리의 다른 글
파이썬GUI, 개발자 정보 입력, 파이썬 개발자 정보 AboutBox (0) | 2023.06.02 |
---|---|
파이썬 GUI, 글자 해상도 선명하게 바꾸기, 해상도, DPI 조절 (0) | 2023.05.26 |
파이썬 GUI, 공지메시지 Notification Message (0) | 2023.05.26 |
파이썬 GUI, Matplotlib 그래프, 차트, 이미지 띄우기 (0) | 2023.05.03 |
파이썬 GUI, 로딩시 로고화면 넣기, 스플래시 스크린 Advanced Splash (0) | 2023.04.30 |