wxPython은 python을 위한 GUI 라이브러리중 하나이다.

기본으로 tk를 지원하고 있지만 솔직히 성에 안차서 파이썬으로는 GUI 를 다루지 않으려고 하지만 어쩌다 보니 이번 기회에 조금 더 공부해보기로 했다.

<window에서 설치하기>
먼저 wxPython을 쓰려면 python의 버전도 체크할 필요가 있다. 아직 3.2를 공식적으로 지원하지 않고 있는 듯 하다.
python이 3.2라면 2.7로 변경할 것을 권한다.

이후, wxPython을 아래 URL에서 다운로드한다.
http://www.wxpython.org/download.php#binaries

나는 Python 2.7을 위한 win32-unicode 버전을 다운로드 했다.
다운로드 : http://downloads.sourceforge.net/wxpython/wxPython2.8-win32-unicode-2.8.11.0-py27.exe
exe 파일이니 적당히 설치해주면 된다.

<linux 우분투에서 설치하기>
우분투에서 설치하고자 할 때, 가장 쉽게 데비안 패키지를 쓰는게 젤 편하다.
apt-get install python-wxgtk2.8

잘 모르겠지만 우분투에서는 2.6과 2.8 버전 을 지원하나보다 ;;

설치가 잘 되었다면 파이썬을 실행하여(windows에서는 IDLE나 Command line을 실행하여) wxPython을 import 해본다.
>> from wxPython.wx import *

아무 에러가 없다면 wxPython이 잘 설치된 것이다.

허접한 글이지만, 도움이 되셨다면 아래 손가락 꾹 눌러주세요.
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, 파이썬

이미 여러 언어를 알고 있는 입장에서 기초부터 다 정리하긴 버겁고 꼭 필요한 것만 추려서 정리해보고자 합니다.

파이썬은 옛날부터 필요할 때마다 조금씩 썼는데 이번엔 안드로이드 앱을 만들면서 파일을 합쳐야 하는 문제와 안드로이드가 리소스 파일명에 제약을 두고 있어서 파일명을 변경해야 하는 문제를 위해 사용했습니다.
어쨌든 이 글은 아주 기초적인 파이썬 사용법을 C 언어 또는 다른 언어를 이미 어느정도 알고 계신 분들을 위한 요약 글입니다.

1. input, print, string
  - 이름을 입력받고 출력하기

name = input("what's your name?")
print("your name is " + name)
print("YOUR NAME IS " + name.upper())
print(your name is " + name.lower())
print(your name is " + name.title())
print("len is " + len(name))

  - 줄바꿈 없이 print : , 가 중요
print "Hello",
print "World"

2. 특수한 문자열
print ( """ 이제부터 줄 바꿈도 모두 출력됨


""")

""" 주석문장 """ 은 여러줄 주석으로 활용할 수도 있습니다.
기본 주석은 #입니다.
문자열 관련 참고 URL : http://creaplz.tistory.com/26

3. 정수 입력
value = int("7")

4. 치환 (마지막 인자는 생략 가능)
print( "abc abc abc abc".replace("abc","def", 3))

5. 랜덤
import random
die1 = random.randint(1,6)
die2 = random.ranrange(6) + 1

6. if문(블록 없이 임의의 white space , tab 대신 동일하게 유지할 것
if value == "7":
  print("seven")
elif value == 7:
  print("seven?")
else:
  print("else")

7 while
whlie value < 10:
  value++
  if value == 9:
    break

8. for (range의 마지막 인자 생략 가능)
for i in range(1,6,2)
  print("i:" + i)

9. index는 C처럼 0부터 시작하지만 -로도 간다. -1은 마지막 아이템이다. 따라서 -len(name)은 첫번째 아이템

10. 튜플 (중간을 수정하기 어려운 배열과 유사)
inventory = ("weapone", "shotgun", "sword")
inventory[0] = "error"
something = inventory[0:1]
something += inventory[2:3]
print(something)

11. list (링크드 리스트 같음 수정도 가능)
list1 = ["weapone", "shotgun", "sword"]
list1[0] = "advanced weapone"
del list1[2]

12. 리스트 튜플들은 중첩도 가능
scores = [("first", 90), ("second", 80)]
item, point = scores[0]

13. 딕셔너리(해쉬맵 같음)
test = {"item1": "dict", "item2":"sohon", 8:"kurl"}
if "item1" in test:
  print(test["item1"])
  print(test.get("item3"))
test["new"]="dictionary"

14. 함수
def log(option, item = 8):
  if option == "A" or option == "B":
    print(" A or B")
  elif option == "C" and item ==8:
    print("C and 8")

log(item = 7, option = "C")

def plus(a, b):
  return a + b

15. global은 변수를 global을 사용할 것임을 명시 아니면 지역변수가 됨

16. 파일 처리
txtfile = open("file", "r")
print(txtfile.read(1))
print(txtfile.readline())
print(txtfile.readline(5))
txtfile.close()

17. 명령행 인자 확인.
파이썬 파일명이 첫번째로 시작하는 리스트입니다. python aaa.py라고 입력하면 aaa.py가 첫번째 엘리먼트
import sys
print sys.argv

18. 외부 명령 실행.
python에서 외부 명령을 실행하는 방법은 여러가지가 있습니다.
os.system("ls")

만약 실행 결과를 내부에서 쓰고 싶다면 
import commands
txt = commands.getoutput("uname -a")
print txt
 
 

 
 

19. 종료
_은 왜 있는지 모르겠네요;;
os._exit(99)

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


Posted by 소혼
이전버튼 1 2 이전버튼

티스토리 툴바