이전글 : py2exe 설치 및 간단한 예제

파이썬에서 사용하는 PMW라는 위젯이 있습니다.
(이전 글 참고 : PMW 설치하기PMW 위젯을 사용하는 방법)
간단히 말해, PMW는 다양한 위젯셋을 제공하는 라이브러리입니다.

그런데 이 PMW를 포함해서 실행파일을 만들 때 다소 까다로운 부분이 있습니다.
사용한 hello.py는 다음과 같습니다.
 import Tkinter
from Pmw import *

root = Tkinter.Tk()
Pmw.initialise(root)

root.mainloop()


그냥 생성하면 마치 잘 생성된것처럼 보이지만 아래 그림처럼 에러가 발생합니다.
(앞의 예제 파일을 수정하여 진행하므로, h:\project\python\py2exe 폴더에서 그대로 작업합니다.)


이를 해결하기 위해서는 먼저 PMW를 bundlepmw.py 를 이용해 생성을 해주어야 합니다.
bundlepmw.py는 PMW를 설치한 폴더 밑 bin이라는 폴더 밑에 있습니다.
저의 경우, C:\Python27\Lib\Pmw\Pmw_1_3\bin 가 됩니다. (Python 2.7 에 PMW1.3 설치)

해당 경로에서 bundle을 생성하기 위해 아래와 같은 명령어를 입력하겠습니다.
python bundlepmw.py C:\Python27\Lib\Pmw\Pmw_1_3\lib

정상적으로 잘 되면 좋겠지만, 안타깝게도 전 아래와 같은 에러가 발생했습니다.

에러 메시지는 regsub가 없다는 것입니다.
regsub는 deprecated 된 것 같습니다.(http://www.python-forum.org/pythonforum/viewtopic.php?f=3&t=2537&p=57943)
해당 모듈을 re로 교체합니다.
#import regsub
import re
사용하는 부분들이 5군데 정도 있는데 모두 교체합니다.
저의 경우 regsub.gsubre.sub로 교체했습니다.

교체가 잘 이뤄진 후 다시 해당 파일을 실행하시면, 에러 없이 Pmw.py 파일이 생성됩니다.
이후 생성된 Pmw.py을 작업중이던 스크립트가 있는 곳(저의 경우 h:\project\python\py2exe) 에 복사합니다.
또한, Pmw의 lib 폴더(저의 경우 C:\Python27\Lib\Pmw\Pmw_1_3\lib)에서 PmwBlt.py, PmwColor.py를 복사해 같은 경로에 넣습니다.

즉파일이 아래와 같이 존재하게 됩니다.

이제 다시 py2exe 생성을 시도합니다.
python setup.py py2exe

정상적으로 생성되고 dist 폴더 아래에 생긴 hello.exe를 실행하면 아래와 같이 됩니다.

신고

'프로그래밍 언어 > <Python>' 카테고리의 다른 글

[파이썬] 이미지 크기 변환 배치  (0) 2011.06.12
py2exe with PMW  (0) 2010.12.28
py2exe  (0) 2010.12.28
[python]XML 처리  (0) 2010.10.12
[파이썬] CSV2SQL ver 0.1  (0) 2010.08.27
[python] Windows에서 커맨드창 하나 더 띄우기  (0) 2010.08.24
Posted by 소혼
[목차]
1. PMW 설치하기
2. PMW 위젯을 사용하는 방법
3. PMW 메가 위젯을 빌드하는 방법
4. 파이썬 Tk의 option_readfile('optionDB')<이글>

Tcl/Tk를 만져볼 줄은 몰랐지만, 역시 블로그에 적힌 질문에 답으로 글을 남깁니다.
질문을 하면 최대한 모르는 것도 찾아서 답변해주는 소혼입니다.
(정말 모르는 것은 답변해드릴 수 없습니다.)

from Tkinter import *
root = Tk()
root.option_readfile('optionDB')

먼저 위 코드를 파이썬에서 실행하면 아래 그림과 같이 에러가 발생합니다.

에러 메시지에 적혀있는 것처럼 optionDB를 읽어들일 수 없다고 나옵니다.

option_readfile이란 option 정보를 파일로부터 읽어들이는 함수입니다.
즉 optionDB라고 하는 파일이 있어서 해당 파일로부터 배경색이라던가, 폰트 정보등을 현재 Tk 창에
반영하는 일을 수행하겠다는 뜻이 됩니다..

먼저 간단하게 optionDB를 만들어 보겠습니다.
파일은 파이썬 마을에서 가져왔습니다.
(기억할 점으로 grey 글자 뒤에도 한줄 공백이 있어야 합니다.)
*background: green
*foreground: grey



위와 같은 파일을 만듭니다. (파일은 별도 첨부함)
당연히 파일 명은 optionDB라고 하겠습니다.
일단 이 파일을 C:\밑에 저장하겠습니다.(나중에 지우시기 바랍니다)

이제 아래 명령을 수행합니다.
root.option_readfile('c:\optionDB')

아무런 반응이 없지만 에러도 나지 않습니다.
지난번 글에서 만들었던 Counter를 만들어 보겠습니다.
>>> import Pmw
>>> counter1 = Pmw.Counter()
>>> counter1.pack(padx = 10, pady = 10)


배경이 녹색이 되었고 전경이 회색이 되었습니다.
그럼 위 예제처럼 하려면 어떻게 해야 할까요?

그것을 확인하기 위해 sys.path를 출력해보겠습니다.
>>> import sys
>>> print(sys.path)
['', 'C:\\Python26\\modules', 'C:\\WINDOWS\\system32\\python26.zip', 'C:\\Python
26\\DLLs', 'C:\\Python26\\lib', 'C:\\Python26\\lib\\plat-win', 'C:\\Python26\\li
b\\lib-tk', 'C:\\Python26', 'C:\\Python26\\lib\\site-packages']

제 컴퓨터의 sys.path입니다. 첫번째 경로는 ''입니다. 경로중에 C:\\Python26이 보입니다.
해당 경로로optionDB를 옮겨보겠습니다.
optionDB을 수정하여 background는 red로 바꾸겠습니다.
 *background: red
*foreground: grey


이제 원래 명령이었던
root.option_readfile('optionDB')
를 수행해보면 아무런 에러가 없습니다.

이제 아래와 같이 counter를 하나 더 달아보면
>>> counter2 = Pmw.Counter()
>>> counter2.pack(padx = 10, pady = 10)
>>>



빨간색 카운터가 생겼습니다.




허접한 글이지만, 도움이 되셨다면 아래 손가락 꾹 눌러주세요.
신고
Posted by 소혼
[목차]
1. PMW 설치하기
2. PMW 위젯을 사용하는 방법<이글>
3. PMW 메가 위젯을 빌드하는 방법
4. Tk의 option_readfile('optionDB')

참고 : http://pmw.sourceforge.net/doc/howtouse.html

아래 글은 위 URL의 내용을 일부 번역하면서 하나씩 수행해본 내용입니다.
자세한 내용은 윗 글을 확인하세요

소개
 이 문서는 Pmw megawidget toolkit 의 특징과 사용법을 간략히 기술한다. ...

시작하며
 Pmw의 초기화
 먼저 Pmw 라이브러리(Pmw 폴더)가 sys.path에 있어야 한다. (역자: 이전의 Pmw 설치 문서를 참고한다)

 다음 두줄은 앞으로의 예제들 이전에 수행되어야 한다. Pmw.initialise()에 대해 더 자세한 정보는  Pmw functions reference manual 를 참고한다.
import Pmw
root = Pmw.initialise()

If necessary, you can have more control over how Tkinter and Pmw are initialised by using this form of initialisation:


import Tkinter
root = Tkinter.Tk()
import Pmw
Pmw.initialise(root)

Megawidget 생성

카운터 만들기
Now that you have the formalities out of the way, Counter MegaWidget을 만들고 패킹할 수 있다. (see Pmw.Counter reference manual) using its default configuration like this:
counter1 = Pmw.Counter()
counter1.pack(padx = 10, pady = 10)

(역자주: 기본 packing이 간단하게 되네요.)

위 예제는 root window의 child window로써 counter를 생성하였다. 만약 다른 윈도우의 child로 Counter를 만들고 싶다면 생성할 때 인자로 넘겨주면 된다.(만약 frame이라는 다른 윈도우가 존재한다고 가정하면)
counter1a = Pmw.Counter(frame)

<이하 Counter가지고 뭔가 많은 예제를 설명하는데 일단 지겨워 Skip>


허접한 글이지만, 도움이 되셨다면 아래 손가락 꾹 눌러주세요.

신고
Posted by 소혼
TAG PMW, 파이썬
[목차]
1. PMW 설치하기<이글>
2. PMW 위젯을 사용하는 방법
3. PMW 메가 위젯을 빌드하는 방법
4. Tk의 option_readfile('optionDB')

방명록에 적어주신 글 읽고 PMW 위젯을 설치해보았습니다.
같이 적혀있는 http://blog.naver.com/pjfile/50002757300 참고하였습니다.
windows XP에서 수행하였습니다.

P
1. 먼저 다운로드를 받습니다.
http://pmw.sourceforge.net/
위 URL로 접속 후, "Downloadthe latest version of Pmw as tar.gz file (with full documentation)" 링크를 클릭하면 아래 그림이 나옵니다.

2. 압축을 해제합니다. 일단 아무 폴더에나 압축을 해제합시다.
아래와 같이 Pmw.1.3.2.tar 가 생길 수 있습니다.

폴더 안의 경로가 어디까지 생기는가는 압축 해제 유틸리티의 역량입니다. 전 알집으로 해제했는데
아래 그림과 같이 폴더들이 생겼습니다.
여기서 필요한 폴더는 Pmw 입니다.

3. Pmw 폴더를 복사하여 파이썬이 설치된 곳 아래 lib 밑에 넣습니다.

4. 설치가 정상적으로 되었는지 확인하기
파이썬을 실행하여 설치가 정상적으로 되었는지 확인합니다.


허접한 글이지만, 도움이 되셨다면 아래 손가락 꾹 눌러주세요.
신고
Posted by 소혼
TAG PMW, 파이썬
이전버튼 1 이전버튼

티스토리 툴바