본문 바로가기

Language/Python

[wxPython] wx.frame 의 style 지정 방법

wxpython을 사용해서 윈도우 창 (프레임)의 스타일을 지정해줄 때에 사용하는 기본은 다음과 같다.


import wx

app = wx.App()
frame = wx.Frame(None, -1, 'frame test', style=wx.DEFAULT_FRAME_STYLE)
frame.Show()
app.MainLoop()


윈도우의 창을 띄우기 위해 사용되는 아주 기본이 되는 코드이고 실행 결과는 다음과 같다.




[그림. 1] 기본 Frame의 모습





위 코드의 2번 째 줄의 인자값들이 바로 윈도우 창을 구성하는 요소가 되는데,

창의 사이즈를 고정시킨다거나 또는 최소, 최대, 종료 버튼 등을 활성화 또는 비활성화를 시키고 싶어서

검색을 해봤는데....


윈도우 창의 기본 프레임을 구성하는 건 wx.DEFAULT_FRAME_STYLE 라는 인자였었고,

그 인자값 하나로 아래의 모든 값들이 표현(Enable)되는 것이었다.


wx.MINIMIZE_BOX : 최소화 버튼


wx.MAXIMIZE_BOX  : 최대화 버튼


wx.RESIZE_BORDER : 창 크기 조절 가능


wx.SYSTEM_MENU : 이건 나도 모르겠음. 검색하면 나오겠지만 필요가 없어서 패스 -_-


wx.CAPTION : 상단바 (타이틀과 최소/최대/종료 버튼이 있는 바를 의미한다.)


wx.CLOSE_BOX : 종료 버튼


wx.CLIP_CHILDREN : 이것도 잘 모르겠음 귀찮아서 검색 안 함 -_-



디폴트 프레임 하나만 선언하면 저것들이 다 Enable 되는 것이다.

근데 만약 저 것들 중 일부를 Disable 시키고 싶다면??


우선 wx.DEFAULT_FRAME_STYLE를 먼저 선언하고 그 뒤에 연이어서 배제 할 스타일을 선언해주면 된다.

뭐 코딩하는 사람에 따라서 디폴트 프레임을 안 쓰고, 그냥 7개의 선언부 중 원하는 것만 선언해도 될 것이다.


나는 창의 사이즈 조절과 최대화 버튼을 Disable 시키고 싶었다.


frame = wx.Frame(None, -1, 'frame test', style=wx.DEFAULT_FRAME_STYLE ^ wx.RESIZE_BORDER ^ wx.MAXIMIZE_BOX)


위 코드에서 ^ 기호는 제외를 하겠다는 기호이다.

만약 제외가 아닌 추가를 시키고 싶다면 | 기호를 써주면 된다. (응용은 알아서 jal~~~)




[그림. 2] 최대화 버튼과 리사이징 비활성화


아무튼 보면은 마우스로 리사이징은 되지 않으며 최대화 버튼 또환 비활성화가 되었다.


개인적으로 작은 툴을 만들었었는데 최대화가 필요 없던지라 기능을 알아보다가 한글로 된 사이트가 없어 보여서 기록해둔다.

(한글로 누군가 옮겨 둔 것을 내가 검색 못했었을지도.. -_-)