본문 바로가기

Software/Python

Python - wxPython으로 GUI를 만들 준비하기

요즘 경기 불황으로 인한 여러가지 대비 훈련이 회사내에서 이뤄지고 있지요. 요즘 같은 분위기에서 정말 그렇지 않은 회사가 어디 있겠습니까만... 그래서 요즘 저도 엄청나게 바쁘게 움직이고 있답니다. 집에서 TV를 볼때 짬짬이 Python을 공부하고, 그걸 점심시간에.. -제가 밥을 포기하는게 쉽지 않습니다만 업무시간에 한가롭게 공부나 하고 있을 수는 없으니까요- 실습해보는 걸로 지금 Python을 공부하고 있답니다. 그러다보니 진도는 좀 느리네요. 그런데 이게 또 재미있습니다. 역시 사람은 좀 긴박한 느낌이 들어줘야 진도가 팍팍 나가나 봅니다.^^

현재, Python 설치하기[바로가기]에서 이클립스 세팅까지 하고, 살짝 저의 업무상 필요에 의해서 시리얼통신[바로가기]을 했습니다. 이제 저는 GUI 환경을 세팅할려구요. 요게 또 필요하거든요. 맨날 콘술창이나 shell에서 결과를 볼 수는 없는데다, 배포용 프로그램들을 만들어 줄려면 역시 요런게 좀 필요하자나요^^

몇년전에 제 블로그를 통해 MATLAB 관련된 글을 쏟아냈던적이 있는데요. 그때는 훌륭한 MATLAB의 document만 참조해도 충분했었죠^^. 그러나 지금은 Python이라는 아이를 다룰려니 엄청난 검색 능력이 필요해 지네요. ㅎㅎ. 어쩌겠습니다. 좋은 툴을 공짜로 쓰는 댓가를 치뤄야죠^^ 덕분에 검색하다보니 또한 많은 고수님들을 만나뵐 수 있게 되었답니다.

일단 wxPython에 대한 개념을 잘 잡을려면 Joinc님의 홈페이지를 방문하면 좋을듯합니다.[바로가기] 아래에 Joinc님의 wxPython 개요를 들어보죠.

wxPython 은 Python 프로그래밍언어에 기반한 GUI toolkit(저작도구)로, 구조적이고 배우기 쉬운 Python 언어를 이용해서 graphical user interface 를 간단하고 빠른시간에 제작가능하도록 도와준다. wxPython 은 크로스 플랫폼 GUI 라이브러리인 wxWindows 를 Python 에서 지원가능하도록 c++ 을 이용해서 제작한것이다. wxPython 는 크로스 플랫폼 툴킷이다. 즉 하나의 플랫폼에서 작동가능하도록 만든 쏘쓰는 (대부분의경우) 수정없이 다른 플랫폼에 이식이 가능하다. 현재 wxPython은 윈도우와 대부분의 Unix및 Unix 호환 시스템에서 작동한다. 매킨토시 버젼은 현재 pre-alpha 로, 조만간 지원가능할것으로 생각된다. Python 과 마찬가지로 wxWindows역시 Open Source 모델이다. 그러므로 쏘쓰를 이용해서 무엇을 만들든지 아무런 제한이 없으며, wxWindows 쏘쓰 자체를 수정 하더라도 전혀 문제가 되지 않는다. 또한 이들을 기반으로 만들어진 wxPython 역시 공개이다.
- 자료참고 : Joinc님의 홈페이지 -

Python이라는 아이를 만나면서 처음으로 크로스 플랫폼이라는 단어도 접해보네요. 신기하고 또 신기합니다.^^

일단, 뭐든 깔고 봐야죠^^

wxPython 공식 홈페이지[바로가기]에서 자신의 Python 버젼과 PC OS에 맞춰 받으면 됩니다.

알아서 경로까지 잡아주니 그냥 다음다음다음하면 되죠^^ 그리고 잘 설치 되었는지 뭐 그런걸 할 간단한 소스 코드가 있어야죠. 그래서 뭐 하나 인터넷을 뒤적뒤적 거리다가 간단히 정말 아무것도 없는 창하나 뜨는 아이로 받았습니다. 그런데 너무 인터넷 검색을 많이 하다가 이 소스를 어디서 다운 받았는지 잊었네요... 흠.. 출처를 놓쳐 죄송합니다.

import wx

class Example(wx.Frame):
  
    def __init__(self, parent, title):
        super(Example, self).__init__(parent, title=title, size=(260, 180))
            
        self.InitUI()
        self.Centre()
        self.Show()     
        
    def InitUI(self):
    
        panel = wx.Panel(self, -1)

        menubar = wx.MenuBar()
        filem = wx.Menu()
        editm = wx.Menu()
        helpm = wx.Menu()

        menubar.Append(filem, '&File')
        menubar.Append(editm, '&Edit')
        menubar.Append(helpm, '&Help')
        self.SetMenuBar(menubar)

        wx.TextCtrl(panel, pos=(3, 3), size=(250, 150))


if __name__ == '__main__':
  
    app = wx.App()
    Example(None, title='')
    app.MainLoop()

아무튼 이 코드는 그냥 창 하나 띄우고, 메뉴 몇개 생성합니다. 물론 아무일도 안하지만^^. 여하튼 익히고 분석할려면 역시 따라하기가 최고니까요. import wx를 통해 설치한 wxPython을 import합니다.

이제 이 소스를 이클립스에서 실행을 할려고 붙여넣었는데요.

기분 나쁜 빨간 엑스가...ㅠㅠ. 실행에는 문제가 없지만, 이클립스가 뭔가 기분나쁘다고 하네요. 여기에 대한 해법은 [바로가기]에 있습니다. 흠...

1) remove wx libs from forced built in libs
2) add wx directory (where dlls resides) to systems libs

흠... 따라 해야죠.. 어쩌겠습니까... ㅎㅎ

이클립스의 Preferences에 가서

거기서 Forced Builtins 탭에서 wx와 wxPython을 remove 시켜주고,

Libraries 탭에서 wx의 설치 경로를 New Folder로 잡아주면 됩니다. 그리고, RUN 해주시면

요렇게 기분나쁜 빨간 박스도 없어졌고, 또 실행된 화면도 보이네요. 클클. 아무것도 안한.. 그냥 따라하기 입니다. Python 따라하기를 블로그에 올리는게 은근 재미있는데요. 언능언능 그래프 그리고도 올려야하고, exe화일 만들어서 배포하기도 올려야하고, 올릴게 너무 많습니다. ㅎㅎ 그럼 지겨운 장마에도 우리 모두 화이팅입니다.^^

반응형