Python wxWidgets 구현한 wxPython 라이브러리 알아보기
오늘은 Python으로 크로스 플랫폼 GUI API인 wxWidgets를 구현한 래퍼 라이브러리인 wxPython을 적용해보려 합니다.
wxPython 설치
우선 virtualenv로 파이썬 환경을 분리해줍니다.
pip3 install virtualenv
virtualenv -mvenv env
env라는 이름의 가상 환경을 생성합니다.
source env/bin/activate
가상환경을 폴더에서 활성화합니다.
pip3 install --upgrade pip
pip의 업그레이드가 존재하는지 확인하고 진행합니다.
pip install -U wxPython
pip로 wxPython을 설치합니다.
hello world
import wx
wxPython을 가져옵니다.
app = wx.App()
wxPython 앱 객체를 생성합니다.
frm = wx.Frame(None, title="Hello World")
frm.Show()
제목이 포함된 윈도우 프레임을 만들고, 보이게 합니다.
app.MainLoop()
이벤트 루프를 생성합니다.
window
import wx
wxPython을 가져옵니다.
def print_hello(event):
wx.MessageBox("Hello world!")
def about_func(event):
wx.MessageBox("sample text", "About title", wx.OK | wx.ICON_INFORMATION)
메시지 박스를 출력하는 함수를 만들어 놓습니다.
class CustomFrame(wx.Frame):
def __init__(self, *args, **kw):
super(HelloFrame, self).__init__(*args, **kw)
윈도우 프레임을 구성하는 클래스를 만듭니다.
pnl = wx.Panel(self)
wx.StaticText(pnl, label="Hello World!")
Hello World!라는 글자를 출력하기 위해 패널에 씁니다.
file = wx.Menu()
hello_item = file.Append(-1, "&Hello...\tCtrl-H", "hello!")
Ctrl+H의 단축키를 지닌 프로그램의 매뉴를 만들 수 있습니다.
help_menu = wx.Menu()
about_item = help_menu.Append(wx.ID_ABOUT)
또다른 매뉴를 만들어서 프로그램 정보를 보게 할 수 있습니다.
menu_bar = wx.MenuBar()
menu_bar.Append(file, "&File")
menu_bar.Append(help_menu, "&Help")
매뉴바를 생성해서 상단에 추가할 수 있습니다.
wx.Menu()로 만든 매뉴가 인자로 필요합니다.
self.SetMenuBar(menu_bar)
윈도우 프레임에 매뉴를 등록합니다.
self.Bind(wx.EVT_MENU, print_hello, hello_item)
self.Bind(wx.EVT_MENU, about_func, about_item)
이벤트 헨들러와 이벤트를 바인드합니다.
self.CreateStatusBar()
self.SetStatusText("wxPython status text")
윈도우 프레임 하단에 있는 상태 바를 생성할 수 있습니다.
if __name__ == '__main__':
app = wx.App()
frm = CustomFrame(None, title='basic window')
frm.Show()
app.MainLoop()
메인 함수를 수행한면 앱의 객체를 생성하고, 직접 작성한 윈도우 프레임 클래스의 하위 클래스를 사용하여 출력합니다.
마지막으로 앱의 메인 루프를 생성합니다.
Written on May 19, 2019