티스토리 뷰

728x90

어떤 프로그래밍 언어로 프로그램을 제작하더라도 본격적인 프로그램 제작 이전에 어떤 형태의 프로그램을 만들 것인지 방향성을 결정하는 것은 상당히 중요 합니다. 프로그램의 동작방식, 연관 범위, 인터페이스에 따라 프로그램의 구현 방식과 규모 등에 있어 큰 차이가 있기 때문에 파이썬을 배워나가는 사람의 입장에서도 이 부분에 대한 이해가 필수적이다 하겠습니다. 결론을 먼저 말한다면 파이썬은 단순 배치 프로그램 부터 시작하여 GUI 프로그램 및 웹 서비스까지 모든 분야에서 사용할 수 있는 매력적인 프로그래밍 언어 입니다. 다음은 사용자와의 인터페이스 관점에서 바라본 프로그램의 종류 입니다.


■ 일괄 작업 프로그램


배치(Batch program) 프로그램이라고도 부르는 것으로 콘솔창 또는 명령행(command line)에서 프로그램을 실행시키면 통상 프로그램이 끝날때까지 더이상 사용자와의 대화가 필요없는 프로그램 입니다. 간단히 파일을 변환시키거나 분석하는 도구로 부터 데이터베이스를 백업하거나 계좌를 결산하는 프로그램까지 다양한 응용이 가능 합니다. 많은 경우 긴 작업 시간이 필요한 경우이거나 주기적으로 자동 수행이 필요한 작업등에 적용 합니다. 



■ 단순 문자 대화형 프로그램


파이썬의 기본 입출력 명령인 raw_input(), input(), print()등을 활용하여 간단하게 사용자와 대화하며 작업을 수행하는 형태입니다. 설치 프로그램이나 설정 변경 프로그램 등에 활용 할 수 있습니다.



■ 쉘 대화형 프로그램


파이썬의 cmd나 shlex등을 이용하여 유닉스/리눅스의 쉘처럼 구조화된 명령을 입력받고 파싱과정을 거쳐 사용자가 요구한 명령을 수행하는 형태로 동작 합니다. 복잡한 명령을 입력하면 내부에서 파싱 과정을 거쳐 서비스를 수행하는 구조 입니다. 파이썬 인터프리터, 데이터베이스 쿼리를 수행하는 클라이언트 프로그램이나 관리도구가 이런 형태를 갖습니다.



■ TUI(Text User Interface) 프로그램


Curses라는 터미널 제어 라이브러리를 통해서 문자 기반이기는 하지만 윈도우 기반 표시나 기타 다양한 고급형 인터페이스를 구현하는 프로그램 입니다.  파이썬도 curses 모듈을 지원하고 있으나 운영체제 간에 차이가 있으므로 사용에 주의해야 합니다.



■ GUI(Graphical User Interface) 프로그램


윈도우 운영체제에서 사용자가 클릭하여 실행시키는 대부분의 프로그램 처럼 그래픽 기반으로 동작하는 프로그램 입니다. 파이썬에서 GUI 프로그램을 만드는 방법은 GUI 툴킷 또는 프레임워크로 어떤 것을 사용하는가에 따라 다양 합니다(https://wiki.python.org/moin/GuiProgramming 참조). 


각 툴킷 마다 장단점이 있기 때문에 신중한 선택이 필요한데 파이썬은 Tcl/Tk기반의 TkInter를 기본 제공하고 있으며, 이외에도 Qt 기반의  PyQt, wxWidgets 기반의 WxPython 등을 대표적인 툴킷으로 들수 있습니다. 이들의 공통점은 운영체제 독립적이라는 것으로 이들 툴킷을 활용하여 제작한 파이썬 GUI 프로그램은 서로 다른 운영체제에서도 동일하게 동작시킬 수 있다는 것입니다.


GUI 프로그램을 만들때 제일 먼저 떠오르는 것은 비주얼스튜디오처럼 통합 개발 환경(IDE)에서 손쉽게 화면을 구성하면서 프로그램을 만들수 없을까 하는 것인데 파이썬에서도 이런 필요를 채워주는 도구들이 있습니다. 관련된 오픈소스 패키지를 나열하면 아래와 같습니다.



  • Monkey Studio
    http://monkeystudio.org/
    PyQt4 기반으로 아래의 그림은  Monkey Studio 1.9.0.4와  PyQt4-4.10 를 설치한 이후  GUI 화면을 디자인하는 화면과 예제의 실행결과 입니다.


  • Rapyd-Tk
    http://www.bitflipper.ca/rapyd/
    Tkinter 기반

  • Visual Tkinter Python IDE
    http://sourceforge.net/projects/visualtkinter
    Tkinter 기반

  • wxGlade
    http://wxglade.sourceforge.net/
    wxPython 기반의 GUI 빌더(완전한 형태의 IDE는 아닙니다)

  • Boa Constructor
    http://boa-constructor.sourceforge.net/
    wxPython 기반의 IDE

  • Glade + PyGTK
    http://glade.gnome.org/
    GUI 빌더 Glade로 인터페이스를 작성하여 GTK+ 오브젝트를 생성하고 PyGTK에서 코드를 작성하는 방식으로 개발 합니다.


지금까지 살펴보았듯이 파이썬에서의 GUI 프로그램 개발은 어떤 툴킷 또는 프레임워크를 선택할것인지가 결정적 요소로 작용 합니다. 특정 운영체제에 전문화된 툴킷도 있지만 파이썬에서 적용하는 GUI 툴킷은 대부분 어떤 운영체제에서도 사용할 수 있는 플랫폼 독립성을 가집니다. 툴킷과의 인터페이스를 감안하여 Tkinter, PyQt, PyGTK, wxPython 등을 적절하게 선택하고 관련 툴킷에 대한 사전 스터디가 선행되어야 합니다. 이들을 위젯 툴킷이라고도 하는데 대표적인 툴킷들에 대하여 간단하게 정리해 보면 아래와 같습니다.


  • Qt
    https://qt-project.org/
    노키아에서 시작하여 2012년 Digia로 이전 되었습니다. 현재 Qt5까지 릴리즈 되었다. GPL 라이선스. http://qt-apps.org/ 에서 다양한 응용 프로그램을 확인해 볼 수 있습니다.
    http://www.diotavelli.net/PyQtWiki/SomeExistingApplications에서는 PyQt로 제작한 응용들을 볼 수 있습니다.

  • Tk
    http://www.tcl.tk/
    1991년 Tcl언어의 확장 형태로 유닉스 X11용으로 시작해서 타운영체제로 확장되었습니다. Qt나 GTK+의 시초라 할 수 있습니다. BSD 라이선스.

  • GTK+
    http://www.gtk.org/
    GIMP Toolkit으로 GIMP에 사용할 목적으로 시작했으나 다양한 분야로 확장되고 있습니다. LGPL 라이선스.
    GNOME 데스크탑, GIMP, Inkscape 등의 대표적인 적용사례가 있습니다.
    PyGTK 응용은 http://www.pygtk.org/applications.html 에서 확인할 수 있습니다.

  • wxWidgets
    http://www.wxwidgets.org/
    이전 이름은 wxWindows로 여러 운영체제에서 다양한 시도가 이루어 지고 있습니다.  LGPL 라이선스. Audacity를 비롯한 다양한 적용 사례가 있습니다.
    http://www.wxwidgets.org/about/screensh.htm


다음 포스팅은 파이썬 프로그램의 형태 중 웹 기반 프로그램에 대한 것으로 이어 집니다.




728x90
댓글
최근에 올라온 글
최근에 달린 댓글
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함