이번 강의는 wxPython의 기초인 프레임과 실행방법을 알려드리려고 합니다.
1. frame
frame은 프로그램의 기본적인 틀이라고 할 수 있습니다. 프레임을 만들어준 후, 그 위에 여러 가지 기능을 넣는 형식입니다. 위 비트토렌트 사진에서도 가장 처음 보이는 화면을 프레임이라고 할 수 있습니다.
wxPython에서 frame은 class로 선언됩니다.
class MainFrame(wx.Frame):
class의 이름은 자신이 원하는 이름으로 하셔도 상관없습니다. 하지만 괄호안에 이것이 무슨 종류인지를 선언해야 합니다. frame에 관한 class이기에 wx.Frame을 넣어 frame임을 선언해줍니다.
def __init__(self, parent, id, title):
그 이후 __init__를 통해 클래스를 초기화 해 주면서 필요한 파라미터를 주게 됩니다. 필요한 파라미터는 다음과 같습니다.
- self : class내부에 생성되는 def문에는 항상 포함되는 파라미터입니다.
- parent : 부모 window창이 있는지 선언하는 파라미터입니다. 이 파라미터에는 실제 Frame이 들어갈 수도 있고, None(없음)이 들어갈 수도 있습니다. 부모 창이 있다면 부모 windw창이 최소화될 때 같이 최소화되고, 부모 window창이 복원될 때 같이 복원됩니다.
- id : 해당 Frame에 고유 코드를 부여합니다. -1을 입력하면 초기값이 들어가게 됩니다.
- title : 해당 Frame의 제목을 입력합니다. 위 비트토렌트를 예시로 들면 BitTorrent 7.7이 title입니다.
위의 self를 제외한 3가지가 대표적인 파라미터입니다. 그 외에 size, name, pos 등이 있지만 class를 호출할 때 자주 사용되는 파라미터는 아닙니다.
wx.Frame.__init__(self, parent, id, title, size=(500, 500))
이제 __init__를 호출하여 최종 설정을 마무리합니다. 이때 위에서 설명한 size, name, pos 등이 추가적으로 들어갈 수 있습니다.
- size : Frame의 크기를 정합니다. 입력하지 않으면 기본값이 들어가게 됩니다.
- name : Frame의 이름을 정해줍니다. title은 프레임의 타이틀 바에 표시되는 제목을 정하는것이고, 이것은 Frame의 개별적인 이름을 정하는 파라미터입니다. 하지만 반드시 필요하지는 않습니다.
- pos : Frame이 어느 위치에서 나올지 정해줍니다. 입력하지 않으면 기본값이 들어가게 됩니다.
여기까지가 Frame을 만드는 가장 기본적인 코드입니다.
2. 시작
이제 해당 코드를 실행해보려고 코드를 입력해 보겠습니다.
MainFrame(None, -1, 'Calculator')
MainFrame을 호출하면서 부모 windw창은 없음, id는 기본값, 제목은 Calculator라고 하겠습니다.
실행하게 되면 wx.App를 먼저 생성하라고 하는 오류가 나오게 됩니다. 즉 wxPython에서 프로그램을 실행하려면 순서가 있다는 뜻입니다.
app = wx.App()
frame = Mainframe(None, -1, 'Calculator')
frame.Show()
app.MainLoop()
기본적인 프로그램의 순서는 다음과 같습니다.
- wx.App()를 생성한다
- frame에 MainFrame의 매개변수에 맞게 MainFrame을 생성한다.
- frame을 화면에 띄운다
- 해당 App이 지속적으로 실행되도록 만든다.
이제 이것을 사용하기 좋게 def문으로 만들면 다음과 같아집니다.
def run():
app = wx.App()
frame = Mainframe(None, -1, 'Calculator')
frame.Show()
app.MainLoop()
run()
이제 코드를 실행해 보겠습니다.
아직은 아무것도 없지만 GUI가 잘 실행된 것을 볼 수 있습니다.
3. 마치며
이번에는 Frame의 생성과 wxPython의 실행에 대해서 알아보았습니다. 다음에는 버튼과 버튼 이벤트를 만드는 방법에 대해서 알아보겠습니다.
'파이썬 강의 > wx' 카테고리의 다른 글
파이썬 GUI(wxPython) 5. Sizer(레이아웃) : BoxSizer, StaticBoxSizer (0) | 2021.01.05 |
---|---|
파이썬 GUI(wxPython) 4. 다이얼로그 (0) | 2021.01.05 |
파이썬 GUI(wxPython) 3. 메뉴바와 메뉴 (0) | 2021.01.05 |
파이썬 GUI(wxPython) 2. 버튼과 버튼이벤트 (1) | 2021.01.04 |
파이썬 GUI(wxPython) 0. 설치 (0) | 2021.01.02 |