Tk는 레이아웃이 좀 귀찮은 것 같다. 그나마 grid라도 있어 얼마나 다행인지...

Frame은 여러 widget을 packing하는데 사용할 수 있는데 packing하는 방법이 너무 단조롭다는 단점을 갖고 있다.
이러한 문제는 grid를 이용해 다소 보완할 수 있다.
grid는 가상의 테이블이 있다고 생각하고 row, column 값을 넣어주면 된다.
가장 큰 row숫자와 column이 이 가상의 테이블의 열과 행의 크기를 지정하는 것 같다.
조심해야 할 점은 0,0부터 시작한다는 점

쓰는 법은 아무 위젯이나 .grid(row=?, column=?)이다.
단점은 너무 많은 위젯을 다 이런식으로 레이아웃을 잡으려면 테이블이 엄청 복잡해질 거라는 점인데. Frame을 적절히 섞어서 레이아웃을 잡아주면 될 것 같다.

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

    ㅎㅎ 형 덕분에 1시간 삽질을 해결했어요...

    • 소혼 2010.11.02 03:25 신고

      이런.. 1시간이나 집에서 코딩을 한단 말이냐...
      부럽군...

      전에 내가 부탁한거 짜는중? ㅋㅋ

TkInter와 관련된 글들은 대체로 아래 주소에서 참고하여 작성할 듯 합니다.
http://infohost.nmt.edu/tcc/help/pubs/tkinter/index.html

먼저, python의 내장 GUI 라이브러리은 TkInter를 이용한 가장 간단한 예제

대충 인터넷 돌아봐도 TkInter로 HellowWorld 만드는 몇가지 방법이 있는 것 같지만, 이게 그나마 단순한 편에 속하는 것 같다.
App이라고 하는 class를 하나 만들고 __init__을 해주는데 이 때 Tk() 객체를 넘겨받을 수 있게 만들었다.
이 객체로부터 frame을 만들고 frame을 먼저 pack을 통해 root에 밀어넣는다.
Label은 frame의 자식으로 생성하는데 옵션으로 text만을 주었고 역시 pack을 통해 frame에 밀어넣었다.


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

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

[wxPython 예제] 2. layout  (0) 2010.08.18
[TkInter 예제]2. Frame과 Layout  (2) 2010.08.18
[TkInter 예제]1. Hello World  (0) 2010.08.18
[wxPython]1. 첫번째 예제  (0) 2010.08.17
[wxPython] 0. 설치하기  (0) 2010.08.17
파이썬 Tk의 option_readfile('optionDB')  (0) 2010.07.06
참고: http://www.joinc.co.kr/modules/moniwiki/wiki.php/article/wxpython_%C7%C1%B7%CE%B1%D7%B7%A1
%B9%D6

wxPython 예제 1 (리눅스)

조인C의 예제를 그대로 가져왔습니다.

아직 내용은 이해가 안가지만 하나씩 간단한 예제를 만들어보기에 앞서 구글링을 통해 얻은 예제입니다.
wxWidget을 공부하려다 말았는데 Windows API가 많이 생각나는 군요 ;;

앞으로 wxPython과 관련된 내용들은 http://www.zetcode.com/wxpython/ 을 많이 참고할 것 같습니다.

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

허접한 글이지만, 도움이 되셨다면 아래 손가락 꾹 눌러주세요.
임의 순서의 값이 필요해 아래와 같은 함수를 작성해보았습니다.

0 부터 19까지 숫자를 임의 순서로 배치하는 예제입니다.


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

Sort a HashMap by Value  (0) 2011.08.07
JNI on linux  (1) 2010.12.27
[자바] 날짜, 요일 출력.  (0) 2010.11.06
[자바]일련의 숫자 임의 정렬하기  (0) 2010.07.31
[String]String.format  (0) 2010.06.16
[팁] File 읽어서 파싱하기  (0) 2010.06.10
WebKit 작업중에 오류가 발생해서 알아보니
gcc 4.4.1에 버그가 있는 것 같다.

현재까지 우분투 9.10 의 기본 gcc 버전은 4.4.1이다.
그래서 직접 gcc 4.5를 설치해보기로 했다.

gcc 4.5 릴리즈 노트 : http://gcc.gnu.org/gcc-4.5/
gcc SVN 관련 문서 : http://gcc.gnu.org/svn.html

1. gcc 4.5 다운로드
먼저 gcc 4.5를 뜻하는 브랜치를 확인해야하겠기에 아래 명령을 수행한다.
svn ls svn://gcc.gnu.org/svn/gcc/branches

명령의 결과로 무수히 많은 브랜치가 올라가는데 gcc 4.5 브랜치는
gcc-4_5-branch

SVN으로 받았으나 configure에서 에러가 발생했는데 메시지 공부하고 있기도 그렇고 해서 그냥 릴리즈 를 받기로 했다.(이제와서 생각해보니 별 차이는 없었을 것 같다.)
경로 : ftp://ftp.dti.ad.jp/pub/lang/gcc/releases/gcc-4.5.0/
파일 : ftp://ftp.dti.ad.jp/pub/lang/gcc/releases/gcc-4.5.0/gcc-4.5.0.tar.gz

2전에 gawk가 있어야 한다.
apt-get install gawk

2. GMP 설치
gcc를 그냥 configure를 수행하면 아래와 같은 에러 메시지를 보게 된다.
 checking for the correct version of mpfr.h... no
configure: error: Building GCC requires GMP 4.2+, MPFR 2.3.1+ and MPC 0.8.0+.
Try the --with-gmp, --with-mpfr and/or --with-mpc options to specify
their locations.  Source code for these libraries can be found at
their respective hosting sites as well as at
ftp://gcc.gnu.org/pub/gcc/infrastructure/.  See also
http://gcc.gnu.org/install/prerequisites.html for additional info.  If
you obtained GMP, MPFR and/or MPC from a vendor distribution package,
make sure that you have installed both the libraries and the header
files.  They may be located in separate packages.
인터넷을 검색하면 GMP와 MPFR의 설치법이 나온다.

GMP 를 다운로드한다.
경로 : http://ftp.gnu.org/pub/gnu/gmp/
내가 받은 파일 : http://ftp.gnu.org/pub/gnu/gmp/gmp-5.0.1.tar.gz

압축을 해제하고 설치한다.
해당 폴더로 이동후
./configure --enable-cxx ( 이후 ppl 라이브러리가 이 인자를 요구했음 )
make install
하면 /usr/local 밑에 설치된다.

3. MPFR 설치
설명 : The MPFR library is a C library for multiple-precision floating-point computations with correct rounding.

MPFR을 다운로드한다.
경로 : http://www.mpfr.org/mpfr-current/
내가 받은 파일 : http://mpfr.loria.fr/mpfr-current/mpfr-3.0.0.tar.gz

압축을 해제하고 설치한다.
해당 폴더로 이동후
./configure
make install
하면 /usr/local 밑에 설치된다.(위에 적은 말 Ctrl+C / Ctrl +V)

4. MPC 설치
MPC를 설치한다.
경로 : http://www.multiprecision.org/
내가 받은 파일 : http://www.multiprecision.org/mpc/download/mpc-0.8.2.tar.gz

압축을 해제하고 설치한다.
해당 폴더로 이동후
./configure
make install
하면 /usr/local 밑에 설치된다.(위에 적은 말 Ctrl+C / Ctrl +V)

**. PPL 빌드(시도했으나 실패. 그리고 설치에 영향을 주지 않았음)
./configure --with-libgmp-prefix=/usr/local --with-libgmpxx-prefix=/usr/loca

5. gcc 빌드
./configure
make (쫄아서 make install 안하고 일단 make)
make install

6. 테스트
export PATH=/usr/local/bin:$PATH
gcc --version
아래와 같은 결과가 나오는 것을 확인할 수 있었다.

gcc (GCC) 4.5.0
Copyright (C) 2010 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

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

'프로그래밍 언어 > C/C++' 카테고리의 다른 글

C로 수행시간 체크하기  (0) 2010.09.30
__builtin_expect 키워드  (0) 2010.09.10
gcc 업그레이드 (4.5.0)  (0) 2010.07.21
Header안에 static 변수  (0) 2010.02.21
디버깅하는 법 - 툴 - ltrace  (0) 2010.02.18
unresolved symbol 에 관하여  (0) 2010.01.27
[목차]
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)
>>>



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




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


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

[목차]
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. 설치가 정상적으로 되었는지 확인하기
파이썬을 실행하여 설치가 정상적으로 되었는지 확인합니다.


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

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

파이썬은 옛날부터 필요할 때마다 조금씩 썼는데 이번엔 안드로이드 앱을 만들면서 파일을 합쳐야 하는 문제와 안드로이드가 리소스 파일명에 제약을 두고 있어서 파일명을 변경해야 하는 문제를 위해 사용했습니다.
어쨌든 이 글은 아주 기초적인 파이썬 사용법을 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)

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


  1. ㄴㄴㄴ 2012.01.04 15:43

    감사합니다! 최고임!!

  2. 화면가득 2015.04.20 00:14

    좋은 글 잘 보고 갑니다. 참고로 range의 반환값은 튜플이 아니라 리스트입니다.

+ Recent posts