You are on page 1of 8

apple

lion rose

orange
tree

Tcl/Tk 기본 + 
4.1 Edition
( for Internet Distribution )
1999. 10. 11.

원나라

naranara@camars.kaist.ac.kr
http://my.netian.com/~wonnr
차 례
1. 들어가는 말.................................................................................................................................................................4
1.1. 책의 구성 및 이용법.........................................................................................................................................4
1.2. 감사의 글.............................................................................................................................................................4
1.3. 저작권...................................................................................................................................................................5
2. 소개...............................................................................................................................................................................6
2.1. TCL/TK 와 스크립트 프로그램..........................................................................................................................6
2.2. TCL/TK 사용 대상...............................................................................................................................................7
2.3. TCL/TK 의 설치....................................................................................................................................................8
2.4. TCL/TK 맛보기.....................................................................................................................................................9
2.5. ONLINE MANUAL 사용........................................................................................................................................11
2.5.1. UNIX...........................................................................................................................................................11
2.5.2. Windows......................................................................................................................................................11
2.6. TCL/TK 자료.......................................................................................................................................................12
3. TCL............................................................................................................................................................................13
3.1. 기본 문법...........................................................................................................................................................13
3.1.1. 한 줄에 한 명령어 씩.............................................................................................................................13
3.1.2. 주석 (comment)..........................................................................................................................................13
3.1.3. 명령어.........................................................................................................................................................14
3.1.4. 시스템 명령어...........................................................................................................................................14
3.1.5. 변수.............................................................................................................................................................15
3.1.6. 수학식(Math Expression)...........................................................................................................................17
3.1.7. 백슬래쉬 문자열( Backslash Sequence)...................................................................................................19
3.1.8. 명령어의 nesting.......................................................................................................................................20
3.1.9. 그루핑(Grouping)과 변수 치환(Substitution).........................................................................................20
3.1.10. 띄어 쓰기.................................................................................................................................................21
3.2. 제어구조.............................................................................................................................................................22
3.2.1. if then else 구문..........................................................................................................................................22
3.2.2. switch 구문.................................................................................................................................................23
3.2.3. while 구문...................................................................................................................................................24
3.2.4. for 구문.......................................................................................................................................................24
3.2.5. foreach 구문...............................................................................................................................................24
3.2.6. break, continue 명령어...............................................................................................................................26
3.2.7. return 명령어..............................................................................................................................................26
3.2.8. catch 구문...................................................................................................................................................27
3.2.9. error 명령어...............................................................................................................................................28
3.3. 문자열 조작.......................................................................................................................................................30
3.3.1. Tcl 문자열에 대한 정의...........................................................................................................................30
3.3.2. string 명령어..............................................................................................................................................30
3.3.3. format 명령어.............................................................................................................................................33
3.3.4. scan 명령어................................................................................................................................................35
3.3.5. 문자열 덧붙이기와 분할, 병합...............................................................................................................36
3.4. 리스트(LIST).......................................................................................................................................................37
3.4.1. 리스트의 생성...........................................................................................................................................37
3.4.2. 리스트 추가 및 연결...............................................................................................................................38
3.4.3. 리스트 원소 얻기.....................................................................................................................................39
3.4.4. 리스트 원소 삽입 및 치환.....................................................................................................................40
3.4.5. 리스트 검색과 정렬.................................................................................................................................40
3.5. 배열.....................................................................................................................................................................43
3.5.1. 배열의 생성과 참조.................................................................................................................................43
3.5.2. array 명령어...............................................................................................................................................44
3.5.3. 배열을 이용한 복잡한 데이터 구조 구현...........................................................................................45
3.6. 정규 표현식.......................................................................................................................................................48
3.6.1. 정규 표현식 Premitives............................................................................................................................48
3.6.2. Backslash Escape........................................................................................................................................52
3.6.3. regexp 명령어.............................................................................................................................................53
3.6.4. regsub 명령어.............................................................................................................................................55
3.7. 함수.....................................................................................................................................................................58
3.7.1. 함수의 정의...............................................................................................................................................58
3.7.2. 함수의 사용...............................................................................................................................................58
3.7.3. Default Parameter Value............................................................................................................................58
3.7.4. Parameter 갯수의 유동성.........................................................................................................................59
3.7.5. 변수 참조 범위.........................................................................................................................................60
3.8. 파일 및 디렉토리 조작...................................................................................................................................65
3.8.1. OS 마다 다른 파일 경로 표기법...........................................................................................................65
3.8.2. 파일 입출력...............................................................................................................................................65
3.8.3. file 명령어...................................................................................................................................................69
3.8.4. cd 와 pwd 명령어......................................................................................................................................70
3.9. 외부 프로그램과의 연동.................................................................................................................................72
3.9.1. exec 명령어.................................................................................................................................................72
3.9.2. exit 명령어..................................................................................................................................................73
3.10. 기타...................................................................................................................................................................74
3.10.1. 명령행 인수 (Command Line Argument)...............................................................................................74
3.10.2. 환경 변수 (environment Variable).........................................................................................................74
3.10.3. incr 명령어...............................................................................................................................................75
3.10.4. console 명령어.........................................................................................................................................75
3.10.5. after 명령어..............................................................................................................................................76
3.10.6. 시스템 변수들.........................................................................................................................................77
3.11. PACKAGE...........................................................................................................................................................78
3.11.1. package 만들기........................................................................................................................................78
3.11.2. package 사용 하기..................................................................................................................................79
4. TK...............................................................................................................................................................................81
4.1. TK 기본...............................................................................................................................................................81
4.1.1. 위짓(Widget)...............................................................................................................................................81
4.1.2. 위짓 클래스 (Widget Class).....................................................................................................................81
4.1.3. 위짓의 Instance Name...............................................................................................................................81
4.1.4. 위짓의 계층 구조.....................................................................................................................................81
4.1.5. Event Driven Programming........................................................................................................................82
4.1.6. 위짓의 생성과 파괴.................................................................................................................................82
4.1.7. 위짓의 배치...............................................................................................................................................82
4.1.8. Widget Attributes.........................................................................................................................................83
4.2. GEOMETRY MANAGER.........................................................................................................................................84
4.2.1. pack 명령어................................................................................................................................................84
4.2.2. Grid 명령어................................................................................................................................................88
4.2.3. Place 명령어...............................................................................................................................................90
4.2.4. 위짓 감추기...............................................................................................................................................91
4.3. BINDING COMMANDS TO EVENTS.......................................................................................................................92
4.3.1. bind 명령어.................................................................................................................................................92
4.3.2. Binding Tags...............................................................................................................................................93
4.4. EVENT..................................................................................................................................................................95
4.4.1. 실제 이벤트...............................................................................................................................................95
4.4.2. 가상이벤트.................................................................................................................................................97
4.4.3. 이벤트 정보...............................................................................................................................................98
4.5. WIDGETS............................................................................................................................................................100
4.5.1. Frame 위짓...............................................................................................................................................100
4.5.2. Button 위짓...............................................................................................................................................100
4.5.3. Label 위짓.................................................................................................................................................101
4.5.4. Entry 위짓.................................................................................................................................................101
4.5.5. Message 위짓............................................................................................................................................103
4.5.6. Scale 위짓.................................................................................................................................................104
4.5.7. listbox 위짓...............................................................................................................................................104
4.5.8. scrollbar 위짓...........................................................................................................................................105
4.5.9. toplevel......................................................................................................................................................106
4.5.10. Text 위짓.................................................................................................................................................107
4.5.11. canvas 위짓.............................................................................................................................................109
4.5.12. update 명령어.........................................................................................................................................117
4.6. DIALOGS............................................................................................................................................................118
4.6.1. Message Box 다이얼로그........................................................................................................................118
4.6.2. File 선택 다이얼로그.............................................................................................................................119
4.6.3. Color 선택 다이얼로그..........................................................................................................................120
4.7. MENU.................................................................................................................................................................121
4.8. RESOURCE..........................................................................................................................................................123
4.8.1. 리소스 파일 로딩...................................................................................................................................123
4.8.2. 리소스 파일 형식...................................................................................................................................124
5. 관련 프로그램.........................................................................................................................................................125
5.1. VTCL..................................................................................................................................................................125
5.2. TCLPRO..............................................................................................................................................................125
6. 예제 프로그램.........................................................................................................................................................126
6.1. 프로그램의 목적 및 기능.............................................................................................................................126
6.2. 프로그램 실행 모습.......................................................................................................................................126
6.3. README 파일....................................................................................................................................................127
6.4. SOURCE FILES....................................................................................................................................................130
6.4.1. sramview.tcl..............................................................................................................................................130
6.4.2. gui.tcl.........................................................................................................................................................142
6.4.3. sramview.resource....................................................................................................................................146
6.5. SAMPLE DATA...................................................................................................................................................147
6.5.1. sample.srv.................................................................................................................................................147
7. 연습문제 풀이.........................................................................................................................................................148
7.1. 구구단 출력 프로그램...................................................................................................................................148
7.2. 숫자 맞추기 게임...........................................................................................................................................148
7.3. 데이타 분석 프로그램...................................................................................................................................149
7.4. STACK................................................................................................................................................................150
7.5. QUEUE...............................................................................................................................................................151
7.6. 다차원 배열.....................................................................................................................................................152
7.7. 데이타 변환.....................................................................................................................................................152
7.8. VERILOG 파일 분석.........................................................................................................................................153
7.9. 총 라인 수 구하기.........................................................................................................................................154
7.10. PACKAGE 만들기............................................................................................................................................155
7.11. 숫자 맞추기 게임 GUI................................................................................................................................158
7.12. X SCROLLBAR..................................................................................................................................................159
7.13. 구구단 GUI....................................................................................................................................................159
7.14. 게임 프로그램...............................................................................................................................................160

You might also like