파이썬 강의/wx

파이썬 GUI(wxPython) 1. 기초(Frame과 실행)

마리사라 2021. 1. 3. 13:36
반응형

이번 강의는 wxPython의 기초인 프레임과 실행방법을 알려드리려고 합니다. 

 


1. frame

wx로 만들어진 프로그램 : 비트토렌트

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()

기본적인 프로그램의 순서는 다음과 같습니다.

  1. wx.App()를 생성한다
  2. frame에 MainFrame의 매개변수에 맞게 MainFrame을 생성한다.
  3. frame을 화면에 띄운다
  4. 해당 App이 지속적으로 실행되도록 만든다.

이제 이것을 사용하기 좋게 def문으로 만들면 다음과 같아집니다.

def run():
    app = wx.App()
    frame = Mainframe(None, -1, 'Calculator')
    frame.Show()
    app.MainLoop()
    

run()

 

이제 코드를 실행해 보겠습니다.

실행 화면

아직은 아무것도 없지만 GUI가 잘 실행된 것을 볼 수 있습니다.


3. 마치며

이번에는 Frame의 생성과 wxPython의 실행에 대해서 알아보았습니다. 다음에는 버튼과 버튼 이벤트를 만드는 방법에 대해서 알아보겠습니다.

반응형