wxPython
GUI prototyping을 할 필요가 있어서 wxPython을 사용해 보았다. MacOSX 버전은 Carbon API를 사용하기 때문에 32-bit 모드에서만 동작을 해서, windows 버전으로 개발을 했다.
Tutorial과 demo code, 문서들이 잘 되어 있어서 처음 learning curve는 낮은 편이었다.
세밀한 제어가 가능했지만, Designer없이 화면 layout을 구성하는게 번거로운 단점이 있었다. 결과물의 품질은 native win32 coding으로 했을때와 별 차이가 없어 보였다.
만든 프로그램은 py2exe를 이용하여 실행파일로 만들어 배포할 수 있다.
from distutils.core import setup
import py2exe
import sys; sys.argv.append('py2exe')
py2exe_options = dict(
ascii=False, # Exclude encodings
excludes=['_ssl', # Exclude _ssl
'pyreadline', 'difflib', 'doctest',
'optparse', 'pickle', 'calendar'], # Exclude standard library
dll_excludes=['msvcr71.dll'], # Exclude msvcr71
packages=['mako.cache'],
compressed=True, # Compress library.zip
)
setup(name='Test,
version='0.5',
description='Test,
author='jmjeong',
console=['test.py'],
options={'py2exe': py2exe_options},
)
output은 exe와 library등으로 구성되어 있는데, NSIS를 이용하여 압축하여 하나의 실행파일로 만들 수 있다. 4M 크기의 최종 결과물이 만들어졌다. 프로그램을 수행하면, 자동으로 압축을 해제하고 실행하기 때문에 처음 실행 시간이 약간 걸린다.
!define py2exeOutputDirectory 'dist'
!define exe 'test.exe'
; Comment out the "SetCompress Off" line and uncomment
; the next line to enable compression. Startup times
; will be a little slower but the executable will be
; quite a bit smaller
;SetCompress Off
SetCompressor lzma
Name 'qb'
OutFile ${exe}
SilentInstall silent
;Icon 'icon.ico'
Section
InitPluginsDir
SetOutPath '$PLUGINSDIR'
File '${py2exeOutputDirectory}*.*'
GetTempFileName $0
DetailPrint $0
Delete $0
StrCpy $0 '$0.bat'
FileOpen $1 $0 'w'
FileWrite $1 '@echo off$r$n'
StrCpy $2 $TEMP 2
FileWrite $1 '$2$r$n'
FileWrite $1 'cd $PLUGINSDIR$r$n'
FileWrite $1 '${exe}$r$n'
FileClose $1
nsExec::Exec $0
Delete $0
SectionEnd
Written on February 25, 2012