[python] - GUI기초 0. wxPython 설치하고 window창 만들어보기

안녕하세요. 홍지군입니다.

오늘은 파이썬에 GUI프로그래밍 하기위한 라이브러리인 wxPython을 설치하는 방법에 대해서 한번 알아보겠습니다. 제가 사용할 부분만 정리하기 때문에 설치 이후 차례적으로 정리하지 않고 제가 가장 필요로 하는 것 먼저 살펴보면서 차근차근 정리를 할 예정입니다. 


파이썬에서는 기본으로 제공하는 "tkinter" 라이브러리를 통해 GUI 프로그래밍이 가능하지만 기본으로 제공되는 라이브러리로 디자인이 단조롭고 복잡한 코딩을 하게 될 경우에 부족한 부분이 많아 PyQt나 wxPython 등과 같은 라이브러리를 추가로 설치해서 사용합니다. 

 

1. wxPython 설치

"CMD" 또는 "파이썬"에서 wxPython 라이브러리 설치하기 

명령 프롬프트에서 "pip install wxPython" 명령으로 설치 

파이썬 버전 3.8, 3.9, 3.10 등등 아나콘다 네비게이터에서 검색해 설치하게 되면 오류가 발생합니다. 아나콘다 네비게이터로 검색하면 wxPython 버전 4.0.4 버전을 설치 할 수 있도록 되어있기 때문에 호환성이 맞지 않아 설치가 불가능하기 때문에  Environments 에서 wxpython 라이브러리를 설치할 가상환경의 플레이버튼을 눌러 "Open Terminal"에서 pip 명령으로 설치해주시면 됩니다. 

 

2. wxPython 라이브러리 사용해서 윈도우창 띄우기 

 

설치된 wxpython 라이브러리를 사용하기 위해서 파이썬에서 wxPython을 import해줍니다. 

import시 python 입력없이 wx만 입력해 import해줍니다. 

import wx

 

이제 wxpython 라이브러리를 사용할 준비는 끝났습니다. 이제는 윈도우창을 생성하고 실행해보겠습니다. 

 

import wx 

class MyFrame ( wx.Frame ):
   def __init__(self):
        wx.Frame.__init__(self, None, title= "프레임", size=wx.Size(600, 500))

if __name__ == '__main__':
    app = wx.App()
    frame = MyFrame()
    frame.Show() 
    app.MainLoop()

 

이렇게 작성한다면 아무것도 없는 600, 500 사이즈의 윈도우창이 하나 나오게됩니다. 물론 아직 내용물은 없습니다. 

 

 

그림을 그리고 싶어도 그림판이 없다면 그림을 그릴 수 없죠 마찬가지로 Text, Label, Button 등을 화면에 배치하려고 하면 그림판인 Frame을 먼저 선언을 해줘야 합니다. Frame을 선언한 뒤에 그 위에다 Text를 넣거나 Label을 넣거나 화면을 우리가 꾸밀 수 있게 되는 것 입니다. 

 

wxpython에서의 그림판, 즉 Frame을 사용하기 위해서는 클래스에서 내가 Frame을 사용한다는 선언을 해주어야합니다.

class MyFrame(wx.Frame):

저는 클래스명을 MyFrame으로 했지만 클래스명은 다른 명칭을 넣으셔도 되지만 프래임을 사용한다고 꼭 선언을 해야합니다. 

 def __init__(self, parent):

   __init__  사용해 클래스를 초기화하고 파라미터값을 받게합니다. 

 

__init__(self, parent=None, id=-1, title='Editor', pos=wx.DefaultPosition, size=wx.DefaultSize, style=wx.DEFAULT_FRAME_STYLE, shellName='PyCrust')Create a Frame instance.

wxpython 공식 홈페이지에서 프레임 인스턴스를 만들기 위해 넣을 수 있는 파라미터들 입니다. 

 

self : 클래스 내에 def문에 항상 포함하는 파라미터

 

parent :  Window창이 부모가 있는지 없는지 선언하는 파라미터 입니다. 지금은 부모 window 창이 없기때문에 None으로 설정했습니다. Frame내에서 새로운 창을 띄우게 될때 이때 새로 만들어진 window창은 먼저 만들어진 window창에서 생성되어졌기 때문에 먼저 생성되어진 window가 최소화될때 같이 최소화 되는 형식으로 영향을 받게 됩니다. 

 

id : Frame의 아이디  -1을 입력하면 초기값이 설정됩니다. 

title : Frame의 타이틀로 여기에 적은 이름이 frame창 상단에 표시됩니다.

pos :  Frame이 어느 위치에 나올지 지정할 수 있습니다. 

size : Frame의 크기를 설정합니다.

style : 시스템 메뉴 표시, 타이틀바에 최소화버튼, 닫기버튼 등등  표시 여부 스타일을 설정 할 수 있습니다

https://wxpython.org/Phoenix/docs/html/wx.Frame.html

 

wx.Frame — wxPython Phoenix 4.2.1a1 documentation

wx.Frame A frame is a window whose size and position can (usually) be changed by the user. It usually has thick borders and a title bar, and can optionally contain a menu bar, toolbar and status bar. A frame can contain any window that is not a frame or di

wxpython.org

자세한 설명은 공식 홈페이지에  정리되어있는 글을 읽어보시면 도움되겠습니다. 

댓글

Designed by JB FACTORY