Tcl-Tk-퀵 가이드
Tcl은 Tool Command Language. 버클리에있는 캘리포니아 대학교의 John Ousterhout가 설계했습니다. 스크립팅 언어와 자체 인터프리터의 조합으로 응용 프로그램에 포함되어 함께 개발합니다.
Tcl은 처음에 Unix 용으로 개발되었습니다. 그런 다음 Windows, DOS, OS / 2 및 Mac OSX로 이식되었습니다. Tcl은 Bourne Shell (Sh), C Shell (csh), Korn Shell (sh) 및 Perl과 같은 다른 유닉스 쉘 언어와 매우 유사합니다.
이는 프로그램이 다른 프로그램과 상호 작용할 수있는 능력을 제공하고 임베드 가능한 인터프리터 역할을하는 것을 목표로합니다. 원래의 목적은 프로그램이 상호 작용할 수 있도록하는 것이었지만 Tcl / Tk로 작성된 본격적인 응용 프로그램을 찾을 수 있습니다.
Tcl의 특징
Tcl의 특징은 다음과 같습니다-
개발 시간 단축.
TK가 통합 된 강력하고 간단한 사용자 인터페이스 키트.
한 번 작성하고 어디에서나 실행하십시오. Windows, Mac OS X 및 거의 모든 Unix 플랫폼에서 실행됩니다.
숙련 된 프로그래머는 쉽게 시작할 수 있습니다. 언어가 너무 간단해서 몇 시간 또는 며칠 안에 Tcl을 배울 수 있습니다.
Tcl을 사용하여 기존 애플리케이션을 쉽게 확장 할 수 있습니다. 또한 C, C ++ 또는 Java에 Tcl을 Tcl에 포함하거나 그 반대로 포함 할 수 있습니다.
강력한 네트워킹 기능 세트가 있습니다.
마지막으로 오픈 소스이며 무료이며 제한없이 상용 응용 프로그램에 사용할 수 있습니다.
응용
Tcl은 범용 언어이며 어디에서나 Tcl을 찾을 수 있습니다. 여기에는 다음이 포함됩니다.
- 종종 데이터베이스에 의해 지원되는 확장 가능한 웹 사이트.
- 고성능 웹 서버는 TclHttpd로 구축됩니다.
- CGI 기반 웹 사이트가있는 Tcl.
- 데스크탑 GUI 애플리케이션.
- 임베디드 애플리케이션.
지역 환경 설정
Tcl에 대한 환경을 설정하려면 컴퓨터에서 사용할 수있는 다음 두 소프트웨어 응용 프로그램이 필요합니다.
- 텍스트 에디터
- Tcl 통역사.
텍스트 에디터
이것은 프로그램을 입력하는 데 사용됩니다. 몇 가지 텍스트 편집기의 예로는 Windows 메모장, OS 편집 명령, Brief, Epsilon, EMACS 및 vim 또는 vi가 있습니다.
텍스트 편집기의 이름과 버전은 운영 체제에 따라 다를 수 있습니다. 예를 들어 메모장은 Windows에서 사용되며 vim 또는 vi는 Linux 또는 UNIX뿐만 아니라 Windows에서도 사용할 수 있습니다.
텍스트 편집기로 만든 파일을 소스 파일이라고하며 프로그램 소스 코드를 포함합니다. Tcl 프로그램의 소스 파일은 확장자로 이름이 지정됩니다.".tcl".
프로그래밍을 시작하기 전에 하나의 텍스트 편집기가 있고 컴퓨터 프로그램을 작성하고 파일에 저장하고 빌드하고 마지막으로 실행할 수있는 충분한 경험이 있는지 확인하십시오.
Tcl 통역사
Tcl 명령을 입력하고 한 줄씩 실행하도록하는 작은 프로그램입니다. 완전히 실행되는 컴파일러와 달리 오류가 발생할 경우 tcl 파일의 실행을 중지합니다.
다음과 같이 helloWorld.tcl 파일을 만들어 보겠습니다. 이 프로그램을 첫 번째 프로그램으로 사용하고 선택한 플랫폼에서 실행합니다.
#!/usr/bin/tclsh
puts "Hello World!"
Windows에 설치
사용 가능한 Active Tcl 바이너리 목록에서 Windows 설치 프로그램 의 최신 버전을 다운로드하십시오 . 활성 Tcl 커뮤니티 에디션은 개인용으로 무료입니다.
다운로드 한 실행 파일을 실행하여 Tcl을 설치합니다. 화면 지침에 따라 수행 할 수 있습니다.
이제 'cd'명령을 사용하여 파일이 포함 된 폴더로 전환하여 helloWorld.tcl이라는 Tcl 파일을 빌드하고 실행 한 후 다음 단계를 사용하여 프로그램을 실행할 수 있습니다.
C:\Tcl> tclsh helloWorld.tcl
다음 출력을 볼 수 있습니다.
C:\Tcl> helloWorld
C : \ Tcl은 샘플을 저장하는 데 사용하는 폴더입니다. Tcl 프로그램을 저장 한 폴더로 변경할 수 있습니다.
Linux에 설치
대부분의 Linux 운영 체제에는 Tcl이 내장되어 있으며 해당 시스템에서 바로 시작할 수 있습니다. 사용할 수없는 경우 다음 명령을 사용하여 Tcl-Tk를 다운로드하여 설치할 수 있습니다.
$ yum install tcl tk
이제 'cd'명령을 사용하여 파일이 포함 된 폴더로 전환하여 helloWorld.tcl이라는 Tcl 파일을 빌드하고 실행할 수 있으며 다음 단계를 사용하여 프로그램을 실행할 수 있습니다.
$ tclsh helloWorld.tcl
다음 출력을 볼 수 있습니다.
$ hello world
데비안 기반 시스템에 설치
OS에서 사용할 수없는 경우 다음 명령을 사용하여 Tcl-Tk를 다운로드하고 설치할 수 있습니다.
$ sudo apt-get install tcl tk
이제 'cd'명령을 사용하여 파일이 포함 된 폴더로 전환하여 helloWorld.tcl이라는 Tcl 파일을 빌드하고 실행할 수 있으며 다음 단계를 사용하여 프로그램을 실행할 수 있습니다.
$ tclsh helloWorld.tcl
다음 출력을 볼 수 있습니다.
$ hello world
Mac OS X에 설치
사용 가능한 Active Tcl 바이너리 목록에서 Mac OS X 패키지 용 최신 버전을 다운로드합니다 . 활성 Tcl 커뮤니티 에디션은 개인용으로 무료입니다.
다운로드 한 실행 파일을 실행하여 Active Tcl을 설치합니다. 화면 지침에 따라 수행 할 수 있습니다.
이제 'cd'를 사용하여 파일이 포함 된 폴더로 전환하여 helloWorld.tcl이라는 Tcl 파일을 빌드하고 실행할 수 있으며 다음 단계를 사용하여 프로그램을 실행할 수 있습니다.
$ tclsh helloWorld.tcl
다음 출력을 볼 수 있습니다.
$ hello world
소스 파일에서 설치
바이너리 패키지를 사용할 수 없을 때 소스 파일에서 설치하는 옵션을 사용할 수 있습니다. 일반적으로 Windows 및 Mac OS X 용 Tcl 바이너리를 사용하는 것이 선호되므로 아래에는 유닉스 기반 시스템의 소스 컴파일 만 나와 있습니다.
소스 파일을 다운로드하십시오 .
이제 다운로드 한 폴더로 전환 한 후 다음 명령을 사용하여 추출, 컴파일 및 빌드합니다.
$ tar zxf tcl8.6.1-src.tar.gz $ cd tcl8.6.1
$ cd unix $ ./configure —prefix=/opt —enable-gcc
$ make $ sudo make install
Note − 위에서 주어진 명령 1과 2에서 다운로드 한 버전으로 파일 이름을 변경했는지 확인하십시오.
Tcl에서는 일부 변수를 특수 변수로 분류하고 미리 정의 된 용도 / 기능을 가지고 있습니다. 특수 변수 목록은 다음과 같습니다.
Sr. 아니. | 특수 변수 및 설명 |
---|---|
1 | argc 여러 명령 줄 인수를 나타냅니다. |
2 | argv 명령 줄 인수가 포함 된 목록을 참조합니다. |
삼 | argv0 해석되는 파일의 파일 이름 또는 스크립트를 호출하는 데 사용되는 이름을 나타냅니다. |
4 | env 환경 변수 인 요소의 배열을 나타내는 데 사용됩니다. |
5 | errorCode 마지막 Tcl 오류에 대한 오류 코드를 제공합니다. |
6 | errorInfo 마지막 Tcl 오류에 대한 스택 추적을 제공합니다. |
7 | tcl_interactive 이를 각각 1과 0으로 설정하여 대화 형 모드와 비대화 형 모드를 전환하는 데 사용됩니다. |
8 | tcl_library 표준 Tcl 라이브러리의 위치를 설정하는 데 사용됩니다. |
9 | tcl_pkgPath 일반적으로 패키지가 설치되는 디렉토리 목록을 제공합니다. |
10 | tcl_patchLevel Tcl 인터프리터의 현재 패치 수준을 나타냅니다. |
11 | tcl_platform byteOrder, machine, osVersion, platform 및 os를 포함한 객체가있는 요소의 배열을 나타내는 데 사용됩니다. |
12 | tcl_precision 정밀도, 즉 부동 소수점 숫자를 문자열로 변환 할 때 보유 할 자릿수를 나타냅니다. 기본값은 12입니다. |
13 | tcl_prompt1 기본 프롬프트를 참조합니다. |
14 | tcl_prompt2 유효하지 않은 명령이있는 보조 프롬프트를 참조합니다. |
15 | tcl_rcFileName 사용자 별 시작 파일을 제공합니다. |
16 | tcl_traceCompile 바이트 코드 컴파일 추적을 제어하는 데 사용됩니다. 출력이 없으면 0, 요약에 1, 세부 정보에 2를 사용합니다. |
17 | tcl_traceExec 바이트 코드 실행 추적을 제어하는 데 사용됩니다. 출력이 없으면 0, 요약에 1, 세부 정보에 2를 사용합니다. |
18 | tcl_version Tcl 인터프리터의 현재 버전을 반환합니다. |
위의 특수 변수는 Tcl 인터프리터에 대해 특별한 의미를 갖습니다.
Tcl 특수 변수 사용 예
특수 변수에 대한 몇 가지 예를 살펴 보겠습니다.
Tcl 버전
#!/usr/bin/tclsh
puts $tcl_version
프로그램을 실행하면 아래와 같은 결과를 얻을 수 있습니다.
8.6
Tcl 환경 경로
#!/usr/bin/tclsh
puts $env(PATH)
프로그램을 실행하면 아래와 같은 결과를 얻을 수 있습니다.
/home/cg/root/GNUstep/Tools:/usr/GNUstep/Local/Tools:/usr/GNUstep/
System/Tools:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/webmaster/.local/bin:/
home/webmaster/bin:/usr/local/scriba/bin:/usr/local/smlnj/
bin:/usr/local/bin/std:/usr/local/bin/extra:/usr/local/fantom/bin:/usr/
local/dart/bin:/usr/bin:/usr/local/bin:/usr/local/sbin:/usr/sbin:/opt/mono/
bin:/opt/mono/lib/mono/4.5:/usr/local/bin:.:/usr/libexec/sdcc:/usr/local/
icon-v950/bin:/usr/local/mozart/bin:/opt/Pawn/bin:/opt/jdk1.7.0_75/bin:/
opt/jdk1.7.0_75/jre/bin:/opt/pash/Source/PashConsole/bin/Debug/
Tcl 패키지 경로
#!/usr/bin/tclsh
puts $tcl_pkgPath
프로그램을 실행하면 아래와 같은 결과를 얻을 수 있습니다.
/usr/lib64/tcl8.6 /usr/share/tcl8.6 /usr/lib64/tk8.6 /usr/share/tk8.6
Tcl 라이브러리
#!/usr/bin/tclsh
puts $tcl_library
프로그램을 실행하면 아래와 같은 결과를 얻을 수 있습니다.
/usr/share/tcl8.6
Tcl 패치 수준
#!/usr/bin/tclsh
puts $tcl_patchLevel
프로그램을 실행하면 아래와 같은 결과를 얻을 수 있습니다.
8.6.6
Tcl 정밀도
#!/usr/bin/tclsh
puts $tcl_precision
프로그램을 실행하면 아래와 같은 결과를 얻을 수 있습니다.
0
Tcl 시작 파일
#!/usr/bin/tclsh
puts $tcl_rcFileName
프로그램을 실행하면 아래와 같은 결과를 얻을 수 있습니다.
~/.tclshrc
Tcl은 배우기 매우 간단합니다. 첫 번째 Tcl 프로그램을 만들어 보겠습니다!
첫 번째 Tcl 프로그램
간단한 Tcl 프로그램을 작성해 보겠습니다. 모든 Tcl 파일의 확장자는 .tcl입니다. 따라서 다음 소스 코드를 test.tcl 파일에 넣으십시오.
#!/usr/bin/tclsh
puts "Hello, World!"
Tcl 환경이 올바르게 설정되었다고 가정합니다. 파일의 디렉토리로 전환 한 후 프로그램을 실행하고 다음을 사용하여 프로그램을 실행합니다.
$ tclsh test.tcl
우리는 다음과 같은 출력을 얻을 것입니다.
Hello, World!
이제 Tcl 프로그램의 기본 구조를 살펴보면 Tcl 언어의 기본 구성 요소를 쉽게 이해할 수 있습니다. Tcl에서는 이전 코드 줄을 종료하기 위해 새 줄 또는 세미콜론을 사용합니다. 그러나 각 명령에 개행 문자를 사용하는 경우 세미콜론이 필요하지 않습니다.
코멘트
주석은 Tcl 프로그램의 텍스트를 돕는 것과 같으며 인터프리터는이를 무시합니다. 주석은 처음에 hash _ (#) 기호를 사용하여 작성할 수 있습니다.
#!/usr/bin/tclsh
# my first program in Tcl
puts "Hello World!"
위의 코드가 실행되면 다음과 같은 결과가 생성됩니다.
Hello World!
여러 줄 또는 블록 주석은 조건이 '0'인 'if'를 사용하여 작성됩니다. 아래에 예가 나와 있습니다.
#!/usr/bin/tclsh
if 0 {
my first program in Tcl program
Its very simple
}
puts "Hello World!"
위의 코드가 실행되면 다음과 같은 결과가 생성됩니다.
Hello World!
인라인 주석은; #을 사용합니다. 아래에 예가 나와 있습니다.
#!/usr/bin/tclsh
puts "Hello World!" ;# my first print in Tcl program
위의 코드가 실행되면 다음과 같은 결과가 생성됩니다.
Hello World!
식별자
Tcl 식별자는 변수, 함수 또는 기타 사용자 정의 항목을 식별하는 데 사용되는 이름입니다. 식별자는 A에서 Z까지의 문자 또는 a에서 z까지의 문자 또는 밑줄 (_)로 시작하여 0 개 이상의 문자, 밑줄, 달러 ($) 및 숫자 (0-9)가 이어집니다.
Tcl은 식별자 내에서 @ 및 %와 같은 구두점 문자를 허용하지 않습니다. Tcl은case sensitive_ 언어. 따라서 인력 과 인력 은 Tcl에서 두 가지 다른 식별자입니다. 다음은 허용되는 식별자의 몇 가지 예입니다.
mohd zara abc move_name a_123
myname50 _temp j a23b9 retVal
예약어
다음 목록은 Tcl의 몇 가지 예약어를 보여줍니다. 이러한 예약어는 상수, 변수 또는 기타 식별자 이름으로 사용할 수 없습니다.
후 | 추가 | 정렬 | auto_execok |
auto_import | auto_load | auto_load_index | auto_qualify |
바이너리 | Bgerror | 단절 | 잡기 |
CD | 시계 | 닫기 | 연결 |
계속하다 | Dde | 기본 | 그밖에 |
elseif | 부호화 | eof | 오류 |
평가 | Exec | 출구 | expr |
fblocked | Fconfigure | fcopy | 파일 |
fileevent | 플러시 | ...에 대한 | 각각 |
체재 | 가져옵니다 | 방울 | 글로벌 |
역사 | 만약 | 정보 | interp |
어울리다 | Lappend | lindex | l 삽입 |
명부 | L 길이 | 하중 | lrange |
대체하다 | Lsearch | lsort | 네임 스페이스 |
열다 | 꾸러미 | pid | pkg_mkIndex |
proc | 풋 | 암호 | 읽다 |
정규식 | Regsub | 이름 바꾸기 | 자원 |
반환 | 주사 | 찾다. 목표물 탐색 | 세트 |
소켓 | 출처 | 스플릿 | 끈 |
subst | 스위치 | tclLog | 텔 |
시각 | 자취 | 알 수 없는 | 설정 해제 |
최신 정보 | 업 레벨 | Upvar | 변하기 쉬운 |
vwait | 동안 |
Tcl의 공백
공백 만 포함하는 줄 (가능하면 주석 포함)을 blank line, Tcl 인터프리터는이를 완전히 무시합니다.
공백은 Tcl에서 공백, 탭, 개행 문자 및 주석을 설명하는 데 사용되는 용어입니다. 공백은 명령문의 한 부분을 다른 부분과 분리하고 인터프리터가 puts, end 및 다음 요소가 시작되는 명령문의 한 요소를 식별 할 수 있도록합니다. 따라서 다음 진술에서-
#!/usr/bin/tclsh
puts "Hello World!"
"puts"와 "Hello World!"사이에는 적어도 하나의 공백 문자 (일반적으로 공백)가 있어야합니다. 통역사가 구별 할 수 있도록합니다. 한편, 다음 진술에서-
#!/usr/bin/tclsh
puts [expr 3 + 2] ;# print sum of the 3 and 2
위의 코드가 실행되면 다음과 같은 결과가 생성됩니다.
5
3과 + 사이 또는 +와 2 사이에는 공백 문자가 필요하지 않습니다. 가독성을 위해 원하는 경우 일부를 자유롭게 포함 할 수 있습니다.
아시다시피 Tcl은 도구 명령 언어이며 명령은 언어의 가장 중요한 부분입니다. Tcl 명령은 각각 자체 사전 정의 된 기능을 가진 언어로 빌드됩니다. 이러한 명령은 언어의 예약어를 형성하며 다른 변수 이름 지정에 사용할 수 없습니다. 이러한 Tcl 명령의 장점은 이러한 명령에 대해 고유 한 구현을 정의하여 원래 내장 기능을 대체 할 수 있다는 것입니다.
각 Tcl 명령은 입력을 확인하고 인터프리터의 작업을 줄입니다.
Tcl 명령은 실제로 실행될 명령을 나타내는 첫 번째 단어가있는 단어 목록입니다. 다음 단어는 인수를 나타냅니다. 단어를 단일 인수로 그룹화하기 위해 여러 단어를 ""또는 {}로 묶습니다.
Tcl 명령의 구문은 다음과 같습니다.
commandName argument1 argument2 ... argumentN
Tcl 명령의 간단한 예를 보겠습니다.
#!/usr/bin/tclsh
puts "Hello, world!"
위의 코드가 실행되면 다음과 같은 결과가 생성됩니다.
Hello, world!
위 코드에서 'puts'는 Tcl 명령이고 "Hello World"는 argument1입니다. 앞에서 말했듯이 ""를 사용하여 두 단어를 그룹화했습니다.
두 개의 인수가있는 Tcl 명령의 또 다른 예를 보겠습니다.
#!/usr/bin/tclsh
puts stdout "Hello, world!"
위의 코드가 실행되면 다음과 같은 결과가 생성됩니다.
Hello, world!
위 코드에서 'puts'는 Tcl 명령, 'stdout'은 argument1, "Hello World"는 argument2입니다. 여기서 stdout은 프로그램이 표준 출력 장치에 인쇄되도록합니다.
명령 대체
명령 대체에서 대괄호는 대괄호 안의 스크립트를 평가하는 데 사용됩니다. 두 개의 숫자를 더하는 간단한 예가 아래에 나와 있습니다.
#!/usr/bin/tclsh
puts [expr 1 + 6 + 9]
위의 코드가 실행되면 다음과 같은 결과가 생성됩니다.
16
가변 대체
변수 대체에서 $는 변수 이름 앞에 사용되며 변수의 내용을 반환합니다. 변수에 값을 설정하고 인쇄하는 간단한 예는 다음과 같습니다.
#!/usr/bin/tclsh
set a 3
puts $a
위의 코드가 실행되면 다음과 같은 결과가 생성됩니다.
3
백 슬래시 대체
이들은 일반적으로 escape sequences; 각 백 슬래시와 그 뒤에 고유 한 의미를 가진 문자가옵니다. 개행 대체에 대한 간단한 예는 다음과 같습니다.
#!/usr/bin/tclsh
puts "Hello\nWorld"
위의 코드가 실행되면 다음과 같은 결과가 생성됩니다.
Hello
World
Tcl의 원시 데이터 유형은 문자열이며 종종 Tcl에서 따옴표를 문자열 전용 언어로 찾을 수 있습니다. 이러한 원시 데이터 유형은 차례로 목록 및 연관 배열에 대한 복합 데이터 유형을 생성합니다. Tcl에서 데이터 유형은 단순한 Tcl 객체뿐만 아니라 핸들, 그래픽 객체 (주로 위젯) 및 I / O 채널과 같은 복잡한 객체를 나타낼 수도 있습니다. 위의 각 항목에 대한 세부 정보를 살펴 보겠습니다.
간단한 Tcl 객체
Tcl에서 정수, 부울, 부동 소수점 숫자 또는 문자열인지 여부. 변수를 사용하고 싶을 때 직접 값을 할당 할 수 있습니다. Tcl에는 선언 단계가 없습니다. 이러한 다양한 유형의 객체에 대한 내부 표현이있을 수 있습니다. 필요한 경우 한 데이터 유형을 다른 데이터 유형으로 변환 할 수 있습니다. 변수에 값을 할당하는 구문은 다음과 같습니다.
#!/usr/bin/tclsh
set myVariable 18
puts $myVariable
위의 코드가 실행되면 다음과 같은 결과가 생성됩니다.
18
위의 문은 myVariable이라는 변수 이름을 생성하고 큰 따옴표를 사용하지 않았음에도 불구하고이를 문자열로 저장합니다. 이제 변수에 대해 산술을 시도하면 자동으로 정수로 바뀝니다. 간단한 예가 아래에 나와 있습니다.
#!/usr/bin/tclsh
set myVariable 18
puts [expr $myVariable + 6 + 9]
위의 코드가 실행되면 다음과 같은 결과가 생성됩니다.
33
한 가지 중요한 점은 이러한 변수에는 기본값이 없으며 사용하기 전에 값을 할당해야한다는 것입니다.
넣기를 사용하여 인쇄하려고하면 숫자가 적절한 문자열로 변환됩니다. 내부 및 외부의 두 가지 표현을 사용하면 Tcl이 다른 언어에 비해 복잡한 데이터 구조를 쉽게 만들 수 있습니다. 또한 Tcl은 동적 객체 특성으로 인해 더 효율적입니다.
문자열 표현
다른 언어와 달리 Tcl에서는 단일 단어 일 때 큰 따옴표를 포함 할 필요가 없습니다. 예는 다음과 같습니다.
#!/usr/bin/tclsh
set myVariable hello
puts $myVariable
위의 코드가 실행되면 다음과 같은 결과가 생성됩니다.
hello
여러 문자열을 나타내려면 큰 따옴표 나 중괄호를 사용할 수 있습니다. 아래에 나와 있습니다-
#!/usr/bin/tclsh
set myVariable "hello world"
puts $myVariable set myVariable {hello world} puts $myVariable
위의 코드가 실행되면 다음과 같은 결과가 생성됩니다.
hello world
hello world
명부
목록은 요소의 그룹 일뿐입니다. 큰 따옴표 또는 중괄호를 사용하는 단어 그룹을 사용하여 간단한 목록을 나타낼 수 있습니다. 간단한 목록은 다음과 같습니다.
#!/usr/bin/tclsh
set myVariable {red green blue}
puts [lindex $myVariable 2] set myVariable "red green blue" puts [lindex $myVariable 1]
위의 코드가 실행되면 다음과 같은 결과가 생성됩니다.
blue
green
연관 배열
연관 배열에는 반드시 정수가 아닌 인덱스 (키)가 있습니다. 일반적으로 키 값 쌍처럼 작동하는 문자열입니다. 간단한 예가 아래에 나와 있습니다.
#!/usr/bin/tclsh
set marks(english) 80
puts $marks(english) set marks(mathematics) 90 puts $marks(mathematics)
위의 코드가 실행되면 다음과 같은 결과가 생성됩니다.
80
90
핸들
Tcl 핸들은 일반적으로 파일 및 그래픽 개체를 나타내는 데 사용됩니다. 여기에는 네트워크 요청에 대한 핸들과 직렬 포트 통신, 소켓 또는 I / O 장치와 같은 기타 채널이 포함될 수 있습니다. 다음은 파일 핸들이 생성 된 예입니다.
set myfile [open "filename" r]
Tcl 파일 I / O 장 에서 파일에 대한 자세한 내용을 볼 수 있습니다.
Tcl에는 변수 선언의 개념이 없습니다. 새 변수 이름이 발견되면 Tcl은 새 변수를 정의합니다.
변수 이름 지정
변수 이름은 모든 문자와 길이를 포함 할 수 있습니다. 변수를 중괄호로 묶어 공백을 가질 수도 있지만 바람직하지 않습니다.
set 명령은 변수에 값을 할당하는 데 사용됩니다. set 명령의 구문은 다음과 같습니다.
set variableName value
변수의 몇 가지 예가 아래에 나와 있습니다.
#!/usr/bin/tclsh
set variableA 10
set {variable B} test
puts $variableA puts ${variable B}
위의 코드가 실행되면 다음과 같은 결과가 생성됩니다.
10
test
위의 프로그램에서 볼 수 있듯이 $ variableName은 변수 값을 가져 오는 데 사용됩니다.
동적 타이핑
Tcl은 동적으로 입력되는 언어입니다. 변수의 값은 필요할 때 필요한 유형으로 동적으로 변환 될 수 있습니다. 예를 들어, 문자열로 저장된 숫자 5는 산술 연산을 수행 할 때 숫자로 변환됩니다. 아래에 나와 있습니다-
#!/usr/bin/tclsh
set variableA "10"
puts $variableA
set sum [expr $variableA +20]; puts $sum
위의 코드가 실행되면 다음과 같은 결과가 생성됩니다.
10
30
수학적 표현
위의 예에서 볼 수 있듯이 expr은 수학적 표현을 나타내는 데 사용됩니다. Tcl의 기본 정밀도는 12 자리입니다. 부동 소수점 결과를 얻으려면 적어도 하나의 십진수를 추가해야합니다. 간단한 예가 위의 내용을 설명합니다.
#!/usr/bin/tclsh
set variableA "10"
set result [expr $variableA / 9]; puts $result
set result [expr $variableA / 9.0]; puts $result
set variableA "10.0"
set result [expr $variableA / 9]; puts $result
위의 코드가 실행되면 다음과 같은 결과가 생성됩니다.
1
1.1111111111111112
1.1111111111111112
위의 예에서 세 가지 경우를 볼 수 있습니다. 첫 번째 경우, 피제수와 제수는 정수이고 결과적으로 정수를 얻습니다. 두 번째 경우에는 제수 만 10 진수이고 세 번째 경우에는 피제수가 10 진수입니다. 두 번째와 세 번째 경우 모두 결과로 십진수를 얻습니다.
위 코드에서 tcl_precision 특수 변수를 사용하여 정밀도를 변경할 수 있습니다. 아래에 나와 있습니다-
#!/usr/bin/tclsh
set variableA "10"
set tcl_precision 5
set result [expr $variableA / 9.0]; puts $result
위의 코드가 실행되면 다음과 같은 결과가 생성됩니다.
1.1111
연산자는 컴파일러에게 특정 수학적 또는 논리적 조작을 수행하도록 지시하는 기호입니다. Tcl 언어는 내장 연산자가 풍부하며 다음 유형의 연산자를 제공합니다.
- 산술 연산자
- 관계 연산자
- 논리 연산자
- 비트 연산자
- 삼항 연산자
이 장에서는 산술, 관계형, 논리, 비트 및 삼항 연산자를 하나씩 설명합니다.
산술 연산자
다음 표는 Tcl 언어에서 지원하는 모든 산술 연산자를 보여줍니다. 변수 'A'가 10을 보유하고 변수 'B'가 20을 보유한다고 가정하면-
예시보기
운영자 | 기술 | 예 |
---|---|---|
+ | 두 개의 피연산자를 더합니다. | A + B는 30을 줄 것입니다 |
- | 첫 번째에서 두 번째 피연산자를 뺍니다. | A-B는 -10을 줄 것입니다. |
* | 두 피연산자를 곱합니다. | A * B는 200을 줄 것입니다 |
/ | 분자를 탈 분자로 나눕니다. | B / A는 2를 줄 것입니다 |
% | 계수 연산자 및 정수 나누기 후의 나머지 | B % A는 0을 제공합니다. |
관계 연산자
다음 표는 Tcl 언어에서 지원하는 모든 관계 연산자를 보여줍니다. 변수 가정A 10 개와 가변 B 20 개를 보유하면-
예시보기
운영자 | 기술 | 예 |
---|---|---|
== | 두 피연산자의 값이 같은지 확인하고, 예이면 조건이 참이됩니다. | (A == B)는 사실이 아닙니다. |
! = | 두 피연산자의 값이 같은지 확인하고, 값이 같지 않으면 조건이 참이됩니다. | (A! = B)는 사실입니다. |
> | 왼쪽 피연산자의 값이 오른쪽 피연산자의 값보다 큰지 확인하고, 그렇다면 조건이 참이됩니다. | (A> B)는 사실이 아닙니다. |
< | 왼쪽 피연산자의 값이 오른쪽 피연산자의 값보다 작은 지 확인하고, 그렇다면 조건이 참이됩니다. | (A <B)는 사실입니다. |
> = | 왼쪽 피연산자의 값이 오른쪽 피연산자의 값보다 크거나 같은지 확인하고, 그렇다면 조건이 참이됩니다. | (A> = B)는 사실이 아닙니다. |
<= | 왼쪽 피연산자의 값이 오른쪽 피연산자의 값보다 작거나 같은지 확인하고, 그렇다면 조건이 참이됩니다. | (A <= B)는 참입니다. |
논리 연산자
다음 표는 Tcl 언어에서 지원하는 모든 논리 연산자를 보여줍니다. 변수 가정A 1 및 변수 보유 B 0을 보유한 다음-
예시보기
운영자 | 기술 | 예 |
---|---|---|
&& | 논리 AND 연산자라고합니다. 두 피연산자가 모두 0이 아니면 조건이 참이됩니다. | (A && B)는 거짓입니다. |
|| | 논리 OR 연산자라고합니다. 두 피연산자 중 하나가 0이 아니면 조건이 참이됩니다. | (A || B) 사실입니다. |
! | 논리 NOT 연산자라고합니다. 피연산자의 논리 상태를 반전하는 데 사용합니다. 조건이 참이면 논리 NOT 연산자는 거짓으로 만듭니다. | ! (A && B)는 참입니다. |
비트 연산자
비트 연산자는 비트에서 작동하고 비트 단위 연산을 수행합니다. &, |, ^의 진리표는 다음과 같습니다.
피 | 큐 | p & q | p | 큐 | 피 ^ q |
---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 | 1 |
1 | 1 | 1 | 1 | 0 |
1 | 0 | 0 | 1 | 1 |
A = 60이라고 가정합니다. 그리고 B = 13; 이제 바이너리 형식으로 다음과 같이됩니다.
A = 0011 1100
B = 0000 1101
----------------------
A & B = 0000 1100
A | B = 0011 1101
A ^ B = 0011 0001
Tcl 언어에서 지원하는 비트 연산자는 다음 표에 나열되어 있습니다. 변수 가정A 60 개와 가변 B 13을 보유하면-
예시보기
운영자 | 기술 | 예 |
---|---|---|
& | 이진 AND 연산자는 두 피연산자에 모두있는 경우 결과에 비트를 복사합니다. | (A & B)는 0000 1100 인 12를 줄 것입니다. |
| | 이진 OR 연산자는 피연산자 중 하나에 있으면 비트를 복사합니다. | (A | B)는 61, 즉 0011 1101을 제공합니다. |
^ | 이진 XOR 연산자는 하나의 피연산자에만 설정되어 있지만 둘 다에 설정되지 않은 경우 비트를 복사합니다. | (A ^ B)는 0011 0001 인 49를 제공합니다. |
<< | 이진 왼쪽 시프트 연산자. 왼쪽 피연산자 값은 오른쪽 피연산자에 지정된 비트 수만큼 왼쪽으로 이동합니다. | << 2는 240, 즉 1111 0000을 제공합니다. |
>> | 이진 오른쪽 시프트 연산자. 왼쪽 피연산자 값은 오른쪽 피연산자에 지정된 비트 수만큼 오른쪽으로 이동합니다. | A >> 2는 15, 즉 0000 1111을 제공합니다. |
삼항 연산자
예시보기
운영자 | 기술 | 예 |
---|---|---|
? : | 세 개 한 벌 | 조건이 참이면? 그런 다음 값 X : 그렇지 않으면 값 Y |
Tcl의 연산자 우선 순위
연산자 우선 순위는 식의 용어 그룹화를 결정합니다. 이는식이 평가되는 방식에 영향을줍니다. 특정 연산자는 다른 연산자보다 우선 순위가 높습니다. 예를 들어 곱셈 연산자는 더하기 연산자보다 우선 순위가 높습니다.
For example: x = 7 + 3 * 2; 여기서 x는 연산자 *가 +보다 우선 순위가 높기 때문에 20이 아닌 13이 할당됩니다. 따라서 먼저 3 * 2를 곱한 다음 7에 더합니다.
여기에서 우선 순위가 가장 높은 연산자는 테이블 맨 위에 표시되고 가장 낮은 연산자는 맨 아래에 표시됩니다. 식 내에서 우선 순위가 높은 연산자가 먼저 평가됩니다.
예시보기
범주 | 운영자 | 연관성 |
---|---|---|
단항 | +- | 오른쪽에서 왼쪽으로 |
곱셈 | * / % | 좌에서 우로 |
첨가물 | +- | 좌에서 우로 |
시프트 | << >> | 좌에서 우로 |
관계형 | <<=>> = | 좌에서 우로 |
비트 AND | & | 좌에서 우로 |
비트 XOR | ^ | 좌에서 우로 |
비트 OR | | | 좌에서 우로 |
논리적 AND | && | 좌에서 우로 |
논리적 OR | || | 좌에서 우로 |
세 개 한 벌 | ? : | 오른쪽에서 왼쪽으로 |
의사 결정 구조는 프로그래머가 조건이 참인 경우 실행될 명령문 또는 명령문과 함께 프로그램에서 평가하거나 테스트 할 하나 이상의 조건을 지정하고, 선택적으로 조건이 충족되는 경우 실행할 다른 명령문을 지정해야합니다. 거짓으로 결정됩니다.
다음은 대부분의 프로그래밍 언어에서 발견되는 일반적인 의사 결정 구조의 일반적인 형태입니다.
Tcl 언어는 내부적으로 expr 명령을 사용하므로 expr 문을 명시 적으로 사용할 필요가 없습니다.
Tcl 언어는 다음과 같은 유형의 의사 결정 진술을 제공합니다.
Sr. 아니. | 성명 및 설명 |
---|---|
1 | if 문 'if'문은 부울 식과 하나 이상의 문으로 구성됩니다. |
2 | if ... else 문 'if'문 뒤에는 부울식이 false 일 때 실행되는 선택적 'else'문이 올 수 있습니다. |
삼 | 중첩 된 if 문 다른 'if'또는 'else if'문 안에 'if'또는 'else if'문 하나를 사용할 수 있습니다. |
4 | switch 문 ㅏ switch 문을 사용하면 변수가 값 목록과 같은지 테스트 할 수 있습니다. |
5 | 중첩 된 switch 문 하나를 사용할 수 있습니다 switch 다른 내부의 진술 switch 진술 (들). |
? : 운영자
우리는 conditional operator ? : 대체하는 데 사용할 수있는 이전 장에서 if...else진술. 그것은 다음과 같은 일반적인 형태를 가지고 있습니다-
Exp1 ? Exp2 : Exp3;
Exp1, Exp2 및 Exp3은 표현식입니다. 콜론의 사용과 배치에 주목하십시오.
'? expression '은 다음과 같이 결정됩니다. Exp1이 평가됩니다. 참이면 Exp2가 평가되고 전체 '? 표현.' Exp1이 false이면 Exp3이 평가되고 해당 값이 표현식의 값이됩니다. 아래에 예가 나와 있습니다.
#!/usr/bin/tclsh
set a 10;
set b [expr $a == 1 ? 20: 30] puts "Value of b is $b\n"
set b [expr $a == 10 ? 20: 30] puts "Value of b is $b\n"
위의 프로그램을 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다.
Value of b is 30
Value of b is 20
코드 블록을 여러 번 실행해야하는 상황이있을 수 있습니다. 일반적으로 명령문은 순차적으로 실행됩니다. 함수의 첫 번째 명령문이 먼저 실행되고 두 번째 명령문이 실행되는 식입니다.
프로그래밍 언어는보다 복잡한 실행 경로를 허용하는 다양한 제어 구조를 제공합니다.
루프 문을 사용하면 문 또는 문 그룹을 여러 번 실행할 수 있으며 다음은 대부분의 프로그래밍 언어에서 루프 문의 일반적인 형식입니다.
Tcl 언어는 루핑 요구 사항을 처리하기 위해 다음 유형의 루프를 제공합니다.
Sr. 아니. | 루프 유형 및 설명 |
---|---|
1 | while 루프 주어진 조건이 참인 동안 명령문 또는 명령문 그룹을 반복합니다. 루프 본문을 실행하기 전에 조건을 테스트합니다. |
2 | for 루프 일련의 명령문을 여러 번 실행하고 루프 변수를 관리하는 코드를 축약합니다. |
삼 | 중첩 된 루프 while, for 또는 do..while 루프 내에서 하나 이상의 루프를 사용할 수 있습니다. |
루프 제어문
루프 제어문은 정상적인 순서에서 실행을 변경합니다. 실행이 범위를 벗어나면 해당 범위에서 생성 된 모든 자동 개체가 삭제됩니다.
Tcl은 다음 제어문을 지원합니다.
Sr. 아니. | 제어문 및 설명 |
---|---|
1 | break 문 루프 또는 스위치 문을 종료하고 실행을 루프 또는 스위치 바로 다음 문으로 전송합니다. |
2 | 계속 진술 루프가 본문의 나머지 부분을 건너 뛰고 반복하기 전에 즉시 상태를 다시 테스트하도록합니다. |
무한 루프
조건이 거짓이되지 않으면 루프는 무한 루프가됩니다. 그만큼while루프는 전통적으로 이러한 목적으로 사용됩니다. 조건식을 1로두면 무한 루프를 만들 수 있습니다.
while {1} {
puts "This loop will run forever."
}
조건식이 없으면 참으로 간주됩니다. Tcl 프로그래머는 더 일반적으로 while {1} 구성을 사용하여 무한 루프를 나타냅니다.
NOTE − Ctrl + C 키를 눌러 무한 루프를 종료 할 수 있습니다.
배열은 인덱스를 사용하여 요소 그룹을 체계적으로 배열 한 것입니다. 일반적인 배열의 구문은 다음과 같습니다.
set ArrayName(Index) value
간단한 배열을 만드는 예는 다음과 같습니다.
#!/usr/bin/tclsh
set languages(0) Tcl
set languages(1) "C Language"
puts $languages(0) puts $languages(1)
위의 코드가 실행되면 다음과 같은 결과가 생성됩니다.
Tcl
C Language
배열 크기
크기 배열을 계산하는 구문은 다음과 같습니다.
[array size variablename]
크기를 인쇄하는 예는 다음과 같습니다.
#!/usr/bin/tclsh
set languages(0) Tcl
set languages(1) "C Language"
puts [array size languages]
위의 코드가 실행되면 다음과 같은 결과가 생성됩니다.
2
배열 반복
그러나 배열 인덱스는 인덱스 1, 인덱스 10 등에 지정된 값과 같이 비 연속적 일 수 있습니다. 그러나 연속적인 경우 배열 반복을 사용하여 배열 요소에 액세스 할 수 있습니다. 배열의 요소를 인쇄하기위한 간단한 배열 반복은 다음과 같습니다.
#!/usr/bin/tclsh
set languages(0) Tcl
set languages(1) "C Language"
for { set index 0 } { $index < [array size languages] } { incr index } { puts "languages($index) : $languages($index)"
}
위의 코드가 실행되면 다음과 같은 결과가 생성됩니다.
languages(0) : Tcl
languages(1) : C Language
연관 배열
Tcl에서 모든 배열은 본질적으로 연관 적입니다. 배열은 특정 순서없이 저장 및 검색됩니다. 연관 배열에는 숫자가 아닐 수도 있고 드물게 채워질 수있는 인덱스가 있습니다. 숫자가 아닌 인덱스가있는 연관 배열의 간단한 예가 아래에 나와 있습니다.
#!/usr/bin/tclsh
set personA(Name) "Dave"
set personA(Age) 14
puts $personA(Name) puts $personA(Age)
위의 코드가 실행되면 다음과 같은 결과가 생성됩니다.
Dave
14
배열 인덱스
배열 인덱스를 검색하는 구문은 다음과 같습니다.
[array names variablename]
크기를 인쇄하는 예는 다음과 같습니다.
#!/usr/bin/tclsh
set personA(Name) "Dave"
set personA(Age) 14
puts [array names personA]
위의 코드가 실행되면 다음과 같은 결과가 생성됩니다.
Age Name
연관 배열의 반복
배열의 인덱스를 사용하여 연관 배열을 반복 할 수 있습니다. 아래에 예가 나와 있습니다.
#!/usr/bin/tclsh
set personA(Name) "Dave"
set personA(Age) 14
foreach index [array names personA] {
puts "personA($index): $personA($index)"
}
위의 코드가 실행되면 다음과 같은 결과가 생성됩니다.
personA(Age): 14
personA(Name): Dave
Tcl의 원시 데이터 유형은 문자열이며 종종 Tcl에서 따옴표를 문자열 전용 언어로 찾을 수 있습니다. 이러한 문자열에는 영숫자 문자, 숫자, 부울 또는 이진 데이터 만 포함될 수 있습니다. Tcl은 16 비트 유니 코드 문자를 사용하며 영숫자 문자에는 비 라틴 문자, 숫자 또는 구두점을 포함한 문자가 포함될 수 있습니다.
부울 값은 true 인 경우 1, yes 또는 true로, false 인 경우 0, no 또는 false로 표시 할 수 있습니다.
문자열 표현
다른 언어와 달리 Tcl에서는 단일 단어 일 때 큰 따옴표를 포함 할 필요가 없습니다. 예는 다음과 같습니다.
#!/usr/bin/tclsh
set myVariable hello
puts $myVariable
위의 코드가 실행되면 다음과 같은 결과가 생성됩니다.
hello
여러 문자열을 나타내려면 큰 따옴표 나 중괄호를 사용할 수 있습니다. 아래에 나와 있습니다-
#!/usr/bin/tclsh
set myVariable "hello world"
puts $myVariable set myVariable {hello world} puts $myVariable
위의 코드가 실행되면 다음과 같은 결과가 생성됩니다.
hello world
hello world
문자열 이스케이프 시퀀스
문자 리터럴은 일반 문자 (예 : 'x'), 이스케이프 시퀀스 (예 : '\ t') 또는 범용 문자 (예 : '\ u02C0') 일 수 있습니다.
Tcl에는 백 슬래시가 앞에 오면 특별한 의미를 가지며 줄 바꿈 (\ n) 또는 탭 (\ t)과 같은 표현에 사용되는 특정 문자가 있습니다. 여기에 이러한 이스케이프 시퀀스 코드 목록이 있습니다.
탈출 시퀀스 | 의미 |
---|---|
\\ | \ 캐릭터 |
\ ' | ' 캐릭터 |
\ " | " 캐릭터 |
\? | ? 캐릭터 |
\ㅏ | 경고 또는 벨 |
\비 | 역행 키이 |
\에프 | 양식 피드 |
\엔 | 개행 |
\아르 자형 | 캐리지 리턴 |
\티 | 수평 탭 |
\V | 수직 탭 |
다음은 몇 가지 이스케이프 시퀀스 문자를 보여주는 예입니다.
#!/usr/bin/tclsh
puts "Hello\tWorld\n\nTutorialspoint";
위의 코드가 컴파일되고 실행되면 다음과 같은 결과가 생성됩니다.
Hello World
Tutorialspoint
문자열 명령
문자열 명령에 대한 하위 명령 목록은 다음 표에 나열되어 있습니다.
Sr. 아니. | 방법 및 설명 |
---|---|
1 | compare string1 string2 string1과 string2를 사 전적으로 비교합니다. 같으면 0, string1이 string2 앞에 오면 -1을 반환하고 그렇지 않으면 1을 반환합니다. |
2 | first string1 string2 string2에서 string1의 첫 번째 발생 인덱스를 반환합니다. 찾을 수없는 경우 -1을 반환합니다. |
삼 | index 문자열 색인 인덱스에있는 문자를 반환합니다. |
4 | last string1 string2 string2에서 string1의 마지막 발생 인덱스를 반환합니다. 찾을 수없는 경우 -1을 반환합니다. |
5 | length 끈 문자열의 길이를 반환합니다. |
6 | match pattern 끈 문자열이 패턴과 일치하면 1을 반환합니다. |
7 | range 문자열 index1 index2 index1에서 index2까지 문자열의 문자 범위를 반환합니다. |
8 | tolower 끈 소문자 문자열을 반환합니다. |
9 | toupper 끈 대문자 문자열을 반환합니다. |
10 | trim 문자열? 자르기 문자? 문자열의 양쪽 끝에서 트림 문자를 제거합니다. 기본 트림 문자는 공백입니다. |
11 | trimleft 문자열? 자르기 문자? 문자열의 왼쪽 시작 부분에서 트림 문자를 제거합니다. 기본 트림 문자는 공백입니다. |
12 | trimright 문자열? 자르기 문자? 문자열의 왼쪽 끝에서 트림 문자를 제거합니다. 기본 트림 문자는 공백입니다. |
13 | wordend findstring 색인 index에서 문자를 포함하는 단어 뒤의 문자의 findstring에서 인덱스를 반환합니다. |
14 | wordstart findstring 색인 index에있는 문자를 포함하는 단어에서 첫 번째 문자의 findstring에있는 인덱스를 반환합니다. |
일반적으로 사용되는 Tcl 문자열 하위 명령의 예는 다음과 같습니다.
문자열 비교
#!/usr/bin/tclsh
set s1 "Hello"
set s2 "World"
set s3 "World"
puts [string compare $s1 $s2]
if {[string compare $s2 $s3] == 0} {
puts "String \'s1\' and \'s2\' are same.";
}
if {[string compare $s1 $s2] == -1} {
puts "String \'s1\' comes before \'s2\'.";
}
if {[string compare $s2 $s1] == 1} {
puts "String \'s2\' comes after \'s1\'.";
}
위의 코드가 컴파일되고 실행되면 다음과 같은 결과가 생성됩니다.
-1
String 's1' and 's2' are same.
String 's1' comes before 's2'.
String 's2' comes after 's1'.
문자열 색인
#!/usr/bin/tclsh
set s1 "Hello World"
set s2 "o"
puts "First occurrence of $s2 in s1" puts [string first $s2 $s1] puts "Character at index 0 in s1" puts [string index $s1 0]
puts "Last occurrence of $s2 in s1" puts [string last $s2 $s1] puts "Word end index in s1" puts [string wordend $s1 20]
puts "Word start index in s1"
puts [string wordstart $s1 20]
위의 코드가 컴파일되고 실행되면 다음과 같은 결과가 생성됩니다.
First occurrence of o in s1
4
Character at index 0 in s1
H
Last occurrence of o in s1
7
Word end index in s1
11
Word start index in s1
6
문자열 길이
#!/usr/bin/tclsh
set s1 "Hello World"
puts "Length of string s1"
puts [string length $s1]
위의 코드가 컴파일되고 실행되면 다음과 같은 결과가 생성됩니다.
Length of string s1
11
케이스 처리
#!/usr/bin/tclsh
set s1 "Hello World"
puts "Uppercase string of s1"
puts [string toupper $s1] puts "Lowercase string of s1" puts [string tolower $s1]
위의 코드가 컴파일되고 실행되면 다음과 같은 결과가 생성됩니다.
Uppercase string of s1
HELLO WORLD
Lowercase string of s1
hello world
문자 트리밍
#!/usr/bin/tclsh
set s1 "Hello World"
set s2 "World"
puts "Trim right $s2 in $s1"
puts [string trimright $s1 $s2]
set s2 "Hello"
puts "Trim left $s2 in $s1"
puts [string trimleft $s1 $s2]
set s1 " Hello World "
set s2 " "
puts "Trim characters s1 on both sides of s2"
puts [string trim $s1 $s2]
위의 코드가 컴파일되고 실행되면 다음과 같은 결과가 생성됩니다.
Trim right World in Hello World
Hello
Trim left Hello in Hello World
World
Trim characters s1 on both sides of s2
Hello World
일치하는 문자열
#!/usr/bin/tclsh
set s1 "[email protected]"
set s2 "*@*.com"
puts "Matching pattern s2 in s1"
puts [string match "*@*.com" $s1 ] puts "Matching pattern tcl in s1" puts [string match {tcl} $s1]
위의 코드가 컴파일되고 실행되면 다음과 같은 결과가 생성됩니다.
Matching pattern s2 in s1
1
Matching pattern tcl in s1
0
명령 추가
#!/usr/bin/tclsh
set s1 "Hello"
append s1 " World"
puts $s1
위의 코드가 컴파일되고 실행되면 다음과 같은 결과가 생성됩니다.
Hello World
포맷 명령
다음 표는 Tcl에서 사용할 수있는 형식 지정자의 목록을 보여줍니다-
지정자 | 사용하다 |
---|---|
%에스 | 문자열 표현 |
%디 | 정수 표현 |
%에프 | 부동 소수점 표현 |
%이자형 | 가수 지수 형식의 부동 소수점 표현 |
%엑스 | 16 진수 10 진수 표현 |
몇 가지 간단한 예가 아래에 나와 있습니다.
#!/usr/bin/tclsh
puts [format "%f" 43.5]
puts [format "%e" 43.5]
puts [format "%d %s" 4 tuts]
puts [format "%s" "Tcl Language"]
puts [format "%x" 40]
위의 코드가 컴파일되고 실행되면 다음과 같은 결과가 생성됩니다.
43.500000
4.350000e+01
4 tuts
Tcl Language
28
스캔 명령
Scan 명령은 형식 지정자에 따라 문자열을 구문 분석하는 데 사용됩니다. 아래에 몇 가지 예가 나와 있습니다.
#!/usr/bin/tclsh
puts [scan "90" {%[0-9]} m]
puts [scan "abc" {%[a-z]} m]
puts [scan "abc" {%[A-Z]} m]
puts [scan "ABC" {%[A-Z]} m]
위의 코드가 컴파일되고 실행되면 다음과 같은 결과가 생성됩니다.
1
1
0
1
목록은 Tcl에서 사용할 수있는 기본 데이터 유형 중 하나입니다. 정렬 된 항목 모음을 나타내는 데 사용됩니다. 동일한 목록에 다른 유형의 항목을 포함 할 수 있습니다. 또한 목록에는 다른 목록이 포함될 수 있습니다.
주목해야 할 중요한 점은 이러한 목록이 문자열로 완전히 표현되고 필요할 때 개별 항목을 형성하도록 처리된다는 것입니다. 따라서 큰 목록을 피하십시오. 배열을 사용하십시오.
목록 만들기
목록의 일반적인 구문은 다음과 같습니다.
set listName { item1 item2 item3 .. itemn }
# or
set listName [list item1 item2 item3]
# or
set listName [split "items separated by a character" split_character]
아래에 몇 가지 예가 나와 있습니다.
#!/usr/bin/tclsh
set colorList1 {red green blue}
set colorList2 [list red green blue]
set colorList3 [split "red_green_blue" _]
puts $colorList1
puts $colorList2 puts $colorList3
위의 코드가 실행되면 다음과 같은 결과가 생성됩니다.
red green blue
red green blue
red green blue
목록에 항목 추가
목록에 항목을 추가하는 구문은 다음과 같습니다.
append listName split_character value
# or
lappend listName value
아래에 몇 가지 예가 나와 있습니다.
#!/usr/bin/tclsh
set var orange
append var " " "blue"
lappend var "red"
lappend var "green"
puts $var
위의 코드가 실행되면 다음과 같은 결과가 생성됩니다.
orange blue red green
목록 길이
목록 길이에 대한 구문은 다음과 같습니다.
llength listName
목록 길이에 대한 예는 다음과 같습니다.
#!/usr/bin/tclsh
set var {orange blue red green}
puts [llength $var]
위의 코드가 실행되면 다음과 같은 결과가 생성됩니다.
4
색인에 항목 나열
특정 인덱스에서 목록 항목을 선택하는 구문은 다음과 같습니다.
lindex listname index
인덱스의 목록 항목에 대한 예는 다음과 같습니다.
#!/usr/bin/tclsh
set var {orange blue red green}
puts [lindex $var 1]
위의 코드가 실행되면 다음과 같은 결과가 생성됩니다.
blue
색인에 항목 삽입
특정 인덱스에 목록 항목을 삽입하는 구문은 다음과 같습니다.
linsert listname index value1 value2..valuen
특정 인덱스에 목록 항목을 삽입하는 예는 다음과 같습니다.
#!/usr/bin/tclsh
set var {orange blue red green}
set var [linsert $var 3 black white]
puts $var
위의 코드가 실행되면 다음과 같은 결과가 생성됩니다.
orange blue red black white green
인덱스에서 항목 교체
특정 인덱스에서 목록 항목을 대체하는 구문은 다음과 같습니다.
lreplace listname firstindex lastindex value1 value2..valuen
특정 인덱스에서 목록 항목을 대체하는 예는 다음과 같습니다.
#!/usr/bin/tclsh
set var {orange blue red green}
set var [lreplace $var 2 3 black white]
puts $var
위의 코드가 실행되면 다음과 같은 결과가 생성됩니다.
orange blue black white
인덱스에 항목 설정
특정 인덱스에서 목록 항목을 설정하는 구문은 다음과 같습니다.
lset listname index value
특정 인덱스에 목록 항목을 설정하는 예는 다음과 같습니다.
#!/usr/bin/tclsh
set var {orange blue red green}
lset var 0 black
puts $var
위의 코드가 실행되면 다음과 같은 결과가 생성됩니다.
black blue red green
목록을 변수로 변환
값을 변수에 복사하는 구문은 다음과 같습니다.
lassign listname variable1 variable2.. variablen
목록을 변수로 변환하는 예는 다음과 같습니다.
#!/usr/bin/tclsh
set var {orange blue red green}
lassign $var colour1 colour2 puts $colour1
puts $colour2
위의 코드가 실행되면 다음과 같은 결과가 생성됩니다.
orange
blue
목록 정렬
목록 정렬 구문은 다음과 같습니다.
lsort listname
목록 정렬의 예는 다음과 같습니다.
#!/usr/bin/tclsh
set var {orange blue red green}
set var [lsort $var]
puts $var
위의 코드가 실행되면 다음과 같은 결과가 생성됩니다.
blue green orange red
사전은 값을 키에 매핑하기위한 배열입니다. 기존 사전의 구문은 다음과 같습니다.
dict set dictname key value
# or
dict create dictname key1 value1 key2 value2 .. keyn valuen
사전을 만드는 몇 가지 예는 다음과 같습니다.
#!/usr/bin/tclsh
dict set colours colour1 red
puts $colours
dict set colours colour2 green
puts $colours set colours [dict create colour1 "black" colour2 "white"] puts $colours
위의 코드가 실행되면 다음과 같은 결과가 생성됩니다.
colour1 red
colour1 red colour2 green
colour1 black colour2 white
Dict의 크기
dict의 크기를 얻는 구문은 다음과 같습니다.
[dict size dictname]
크기를 인쇄하는 예는 다음과 같습니다.
#!/usr/bin/tclsh
set colours [dict create colour1 "black" colour2 "white"]
puts [dict size $colours]
위의 코드가 실행되면 다음과 같은 결과가 생성됩니다.
2
사전 반복
키와 사전 값을 인쇄하기위한 간단한 사전 반복은 다음과 같습니다.
#!/usr/bin/tclsh
set colours [dict create colour1 "black" colour2 "white"]
foreach item [dict keys $colours] {
set value [dict get $colours $item]
puts $value
}
위의 코드가 실행되면 다음과 같은 결과가 생성됩니다.
black
white
Dict의 키 값
dict에서 키 값을 검색하는 구문은 다음과 같습니다.
[dict get $dictname $keyname]
키 값을 검색하는 예는 다음과 같습니다.
#!/usr/bin/tclsh
set colours [dict create colour1 "black" colour2 "white"]
set value [dict get $colours colour1]
puts $value
위의 코드가 실행되면 다음과 같은 결과가 생성됩니다.
black
Dict의 모든 키
dict의 모든 키를 검색하는 구문은 다음과 같습니다.
[dict keys $dictname]
모든 키를 인쇄하는 예는 다음과 같습니다.
#!/usr/bin/tclsh
set colours [dict create colour1 "black" colour2 "white"]
set keys [dict keys $colours] puts $keys
위의 코드가 실행되면 다음과 같은 결과가 생성됩니다.
colour1 colour2
Dict의 모든 값
dict의 모든 값을 검색하는 구문은 다음과 같습니다.
[dict values $dictname]
모든 값을 인쇄하는 예는 다음과 같습니다.
#!/usr/bin/tclsh
set colours [dict create colour1 "black" colour2 "white"]
set values [dict values $colours]
puts $values
위의 코드가 실행되면 다음과 같은 결과가 생성됩니다.
black white
Dict에 키가 있음
dict에 키가 있는지 확인하는 구문은 다음과 같습니다.
[dict exists $dictname $key]
dict에 키가 있는지 확인하는 예는 다음과 같습니다.
#!/usr/bin/tclsh
set colours [dict create colour1 "black" colour2 "white"]
set result [dict exists $colours colour1]
puts $result
위의 코드가 실행되면 다음과 같은 결과가 생성됩니다.
1
프로시 저는 재사용 가능한 특정 기능을 제공하는 일련의 명령이있는 코드 블록에 불과합니다. 여러 위치에서 동일한 코드가 반복되는 것을 방지하는 데 사용됩니다. 절차는 많은 프로그래밍 언어에서 사용되는 함수와 동일하며 Tcl에서 다음과 같은 도움을 받아 사용할 수 있습니다.proc 명령.
간단한 절차를 만드는 구문은 다음과 같습니다.
proc procedureName {arguments} {
body
}
절차에 대한 간단한 예가 아래에 나와 있습니다.
#!/usr/bin/tclsh
proc helloWorld {} {
puts "Hello, World!"
}
helloWorld
위의 코드가 실행되면 다음과 같은 결과가 생성됩니다.
Hello, World!
여러 인수가있는 절차
인수가있는 절차의 예는 다음과 같습니다.
#!/usr/bin/tclsh
proc add {a b} {
return [expr $a+$b]
}
puts [add 10 30]
위의 코드가 실행되면 다음과 같은 결과가 생성됩니다.
40
가변 인수가있는 프로 시저
인수가있는 절차의 예는 다음과 같습니다.
#!/usr/bin/tclsh
proc avg {numbers} {
set sum 0
foreach number $numbers {
set sum [expr $sum + $number]
}
set average [expr $sum/[llength $numbers]]
return $average
}
puts [avg {70 80 50 60}]
puts [avg {70 80 50 }]
위의 코드가 실행되면 다음과 같은 결과가 생성됩니다.
65
66
기본 인수가있는 절차
기본 인수는 값이 제공되지 않은 경우 사용할 수있는 기본값을 제공하는 데 사용됩니다. 때때로 암시 적 인수라고도하는 기본 인수가있는 프로 시저의 예는 다음과 같습니다.
#!/usr/bin/tclsh
proc add {a {b 100} } {
return [expr $a+$b]
}
puts [add 10 30]
puts [add 10]
위의 코드가 실행되면 다음과 같은 결과가 생성됩니다.
40
110
재귀 적 절차
재귀 절차의 예는 다음과 같습니다.
#!/usr/bin/tclsh
proc factorial {number} {
if {$number <= 1} {
return 1
}
return [expr $number * [factorial [expr $number - 1]]]
}
puts [factorial 3]
puts [factorial 5]
위의 코드가 실행되면 다음과 같은 결과가 생성됩니다.
6
120
패키지는 재사용 가능한 코드 단위를 만드는 데 사용됩니다. 패키지는 특정 기능을 제공하는 파일 모음으로 구성됩니다. 이 파일 모음은 패키지 이름으로 식별되며 동일한 파일의 여러 버전을 가질 수 있습니다. 패키지는 Tcl 스크립트, 바이너리 라이브러리 또는 둘 모두의 조합 일 수 있습니다.
패키지는 네임 스페이스 개념을 사용하여 변수 이름과 프로 시저 이름의 충돌을 방지합니다. 다음 ' namespace '튜토리얼 에서 자세한 내용을 확인하십시오 .
패키지 생성
최소 두 개의 파일을 사용하여 패키지를 만들 수 있습니다. 하나의 파일에는 패키지 코드가 포함되어 있습니다. 다른 파일에는 패키지 선언을위한 색인 패키지 파일이 포함되어 있습니다.
패키지 생성 및 사용 단계 목록은 다음과 같습니다.
1 단계 : 코드 생성
HelloWorld라는 폴더 안에 패키지에 대한 코드를 만듭니다. 파일 이름을 HelloWorld.tcl로 지정하고 아래에 표시된 코드를 사용합니다.
# /Users/rajkumar/Desktop/helloworld/HelloWorld.tcl
# Create the namespace
namespace eval ::HelloWorld {
# Export MyProcedure
namespace export MyProcedure
# My Variables
set version 1.0
set MyDescription "HelloWorld"
# Variable for the path of the script
variable home [file join [pwd] [file dirname [info script]]]
}
# Definition of the procedure MyProcedure
proc ::HelloWorld::MyProcedure {} {
puts $HelloWorld::MyDescription } package provide HelloWorld $HelloWorld::version
package require Tcl 8.0
2 단계 : 패키지 색인 생성
tclsh를 엽니 다. HelloWorld 디렉토리로 전환하고 pkg_mkIndex 명령을 사용하여 아래와 같이 색인 파일을 만듭니다.
% cd /Users/rajkumar/Desktop/helloworld
% pkg_mkIndex . *.tcl
3 단계 : 자동 경로에 디렉토리 추가
lappend 명령을 사용하여 아래와 같이 전역 목록에 패키지를 추가합니다.
% lappend auto_path "/Users/rajkumar/Desktop/helloworld"
4 단계 : 패키지 추가
다음은 아래와 같이 package require 문을 사용하여 프로그램에 패키지를 추가합니다.
% package require HelloWorld 1.0
5 단계 : 호출 절차
이제 모든 설정이 완료되면 아래와 같이 절차를 호출 할 수 있습니다.
% puts [HelloWorld::MyProcedure]
다음 결과를 얻을 수 있습니다-
HelloWorld
처음 두 단계는 패키지를 만듭니다. 패키지가 생성되면 아래와 같이 마지막 세 개의 문을 추가하여 모든 Tcl 파일에서 사용할 수 있습니다.
lappend auto_path "/Users/rajkumar/Desktop/helloworld"
package require HelloWorld 1.0
puts [HelloWorld::MyProcedure]
다음 결과를 얻을 수 있습니다-
HelloWorld
네임 스페이스는 변수와 프로 시저를 그룹화하는 데 사용되는 식별자 집합의 컨테이너입니다. 네임 스페이스는 Tcl 버전 8.0에서 사용할 수 있습니다. 네임 스페이스가 도입되기 전에는 단일 전역 범위가있었습니다. 이제 네임 스페이스를 사용하면 전역 범위의 추가 파티션이 있습니다.
네임 스페이스 생성
네임 스페이스는 namespace명령. 네임 스페이스를 생성하는 간단한 예는 다음과 같습니다.
#!/usr/bin/tclsh
namespace eval MyMath {
# Create a variable inside the namespace
variable myResult
}
# Create procedures inside the namespace
proc MyMath::Add {a b } {
set ::MyMath::myResult [expr $a + $b]
}
MyMath::Add 10 23
puts $::MyMath::myResult
위의 코드가 실행되면 다음과 같은 결과가 생성됩니다.
33
위의 프로그램에서 변수가있는 네임 스페이스가 있음을 알 수 있습니다. myResult 및 절차 Add. 이렇게하면 서로 다른 네임 스페이스에서 동일한 이름을 가진 변수와 프로 시저를 만들 수 있습니다.
중첩 된 네임 스페이스
Tcl은 네임 스페이스의 중첩을 허용합니다. 중첩 네임 스페이스에 대한 간단한 예는 다음과 같습니다.
#!/usr/bin/tclsh
namespace eval MyMath {
# Create a variable inside the namespace
variable myResult
}
namespace eval extendedMath {
# Create a variable inside the namespace
namespace eval MyMath {
# Create a variable inside the namespace
variable myResult
}
}
set ::MyMath::myResult "test1"
puts $::MyMath::myResult
set ::extendedMath::MyMath::myResult "test2"
puts $::extendedMath::MyMath::myResult
위의 코드가 실행되면 다음과 같은 결과가 생성됩니다.
test1
test2
네임 스페이스 가져 오기 및 내보내기
이전 네임 스페이스 예제에서 볼 수 있듯이 많은 범위 확인 연산자를 사용하며 사용하기가 더 복잡합니다. 네임 스페이스를 가져오고 내 보내면이를 방지 할 수 있습니다. 아래에 예가 나와 있습니다.
#!/usr/bin/tclsh
namespace eval MyMath {
# Create a variable inside the namespace
variable myResult
namespace export Add
}
# Create procedures inside the namespace
proc MyMath::Add {a b } {
return [expr $a + $b]
}
namespace import MyMath::*
puts [Add 10 30]
위의 코드가 실행되면 다음과 같은 결과가 생성됩니다.
40
네임 스페이스 잊어 버려
다음을 사용하여 가져온 네임 스페이스를 제거 할 수 있습니다. forget하위 명령. 간단한 예가 아래에 나와 있습니다.
#!/usr/bin/tclsh
namespace eval MyMath {
# Create a variable inside the namespace
variable myResult
namespace export Add
}
# Create procedures inside the namespace
proc MyMath::Add {a b } {
return [expr $a + $b]
}
namespace import MyMath::*
puts [Add 10 30]
namespace forget MyMath::*
위의 코드가 실행되면 다음과 같은 결과가 생성됩니다.
40
Tcl은 내장 된 명령 열기, 읽기, 넣기, 가져 오기 및 닫기의 도움으로 파일 처리를 지원합니다.
파일은 바이트 시퀀스를 나타내며 텍스트 파일이든 바이너리 파일이든 상관 없습니다.
파일 열기
Tcl은 open 명령을 사용하여 Tcl에서 파일을 엽니 다. 파일을 여는 구문은 다음과 같습니다.
open fileName accessMode
여기, filename 파일 이름을 지정하는 데 사용할 문자열 리터럴입니다. accessMode 다음 값 중 하나를 가질 수 있습니다.
Sr. 아니. | 모드 및 설명 |
---|---|
1 | r 읽기 목적으로 기존 텍스트 파일을 열고 파일이 있어야합니다. accessMode가 지정되지 않은 경우 사용되는 기본 모드입니다. |
2 | w 쓰기 위해 텍스트 파일을 엽니 다. 존재하지 않는 경우 새 파일이 생성되고 기존 파일은 잘립니다. |
삼 | a 추가 모드로 쓰기 위해 텍스트 파일을 열고 파일이 있어야합니다. 여기에서 프로그램은 기존 파일 내용에 내용을 추가하기 시작합니다. |
4 | r+ 읽고 쓰기 위해 텍스트 파일을 엽니 다. 파일이 이미 존재해야합니다. |
5 | w+ 읽고 쓰기 위해 텍스트 파일을 엽니 다. 먼저 파일이 있으면 길이를 0으로 자릅니다. 그렇지 않으면 파일이 없으면 만듭니다. |
6 | a+ 읽고 쓰기 위해 텍스트 파일을 엽니 다. 파일이없는 경우 생성합니다. 읽기는 처음부터 시작되지만 쓰기는 추가 만 가능합니다. |
파일 닫기
파일을 닫으려면 close 명령을 사용하십시오. 닫기 구문은 다음과 같습니다.
close fileName
프로그램에서 연 파일은 프로그램이 해당 파일 사용을 마치면 닫아야합니다. 대부분의 경우 파일을 명시 적으로 닫을 필요는 없습니다. File 객체가 자동으로 종료되면 자동으로 닫힙니다.
파일 작성
Puts 명령은 열린 파일에 쓰는 데 사용됩니다.
puts $filename "text to write"
파일에 쓰는 간단한 예는 다음과 같습니다.
#!/usr/bin/tclsh
set fp [open "input.txt" w+]
puts $fp "test" close $fp
위 코드를 컴파일하여 실행하면 새로운 파일이 생성됩니다. input.txt 시작된 디렉토리 (프로그램의 작업 디렉토리).
파일 읽기
다음은 파일에서 읽는 간단한 명령입니다-
set file_data [read $fp]
읽기 및 쓰기의 완전한 예는 다음과 같습니다.
#!/usr/bin/tclsh
set fp [open "input.txt" w+]
puts $fp "test"
close $fp set fp [open "input.txt" r] set file_data [read $fp]
puts $file_data close $fp
위 코드가 컴파일되고 실행되면 이전 섹션에서 생성 된 파일을 읽고 다음과 같은 결과를 생성합니다.
test
다음은 한 줄씩 파일 끝까지 파일을 읽는 또 다른 예입니다.
#!/usr/bin/tclsh
set fp [open "input.txt" w+]
puts $fp "test\ntest" close $fp
set fp [open "input.txt" r]
while { [gets $fp data] >= 0 } { puts $data
}
close $fp
위 코드가 컴파일되고 실행되면 이전 섹션에서 생성 된 파일을 읽고 다음과 같은 결과를 생성합니다.
test
test
Tcl의 오류 처리는 다음의 도움으로 제공됩니다. error 과 catch명령. 이러한 각 명령의 구문은 다음과 같습니다.
오류 구문
error message info code
위의 오류 명령 구문에서 message는 오류 메시지, info는 전역 변수 errorInfo에 설정되고 code는 전역 변수 errorCode에 설정되어 있습니다.
캐치 구문
catch script resultVarName
위의 catch 명령 구문에서 script는 실행될 코드이고 resultVarName은 오류 또는 결과를 보유하는 변수입니다. catch 명령은 오류가 없으면 0을 반환하고 오류가 있으면 1을 반환합니다.
간단한 오류 처리의 예는 다음과 같습니다.
#!/usr/bin/tclsh
proc Div {a b} {
if {$b == 0} {
error "Error generated by error" "Info String for error" 401
} else {
return [expr $a/$b]
}
}
if {[catch {puts "Result = [Div 10 0]"} errmsg]} {
puts "ErrorMsg: $errmsg" puts "ErrorCode: $errorCode"
puts "ErrorInfo:\n$errorInfo\n" } if {[catch {puts "Result = [Div 10 2]"} errmsg]} { puts "ErrorMsg: $errmsg"
puts "ErrorCode: $errorCode" puts "ErrorInfo:\n$errorInfo\n"
}
위의 코드가 실행되면 다음과 같은 결과가 생성됩니다.
ErrorMsg: Error generated by error
ErrorCode: 401
ErrorInfo:
Info String for error
(procedure "Div" line 1)
invoked from within
"Div 10 0"
Result = 5
위의 예에서 볼 수 있듯이 사용자 지정 오류 메시지를 만들 수 있습니다. 마찬가지로 Tcl에 의해 생성 된 오류를 포착 할 수 있습니다. 아래에 예가 나와 있습니다.
#!/usr/bin/tclsh
catch {set file [open myNonexistingfile.txt]} result
puts "ErrorMsg: $result" puts "ErrorCode: $errorCode"
puts "ErrorInfo:\n$errorInfo\n"
위의 코드가 실행되면 다음과 같은 결과가 생성됩니다.
ErrorMsg: couldn't open "myNonexistingfile.txt": no such file or directory
ErrorCode: POSIX ENOENT {no such file or directory}
ErrorInfo:
couldn't open "myNonexistingfile.txt": no such file or directory
while executing
"open myNonexistingfile.txt"
Tcl은 다양한 작업을위한 여러 내장 함수 (프로 시저)를 제공합니다. 여기에는-
목록 처리를 위한 함수 .
문자열 처리를 위한 함수 .
배열 처리를 위한 함수 .
사전 처리 기능 .
파일 I / O 처리를 위한 기능 .
네임 스페이스 및 패키지 생성을위한 함수입니다 .
수학 연산을위한 함수.
시스템 운영을위한 기능.
수학 및 시스템 기능을 제외한 위의 각 항목은 이전 장에서 다룹니다. 수학 및 시스템 내장 함수는 아래에 설명되어 있습니다.
수학 함수
Tcl에서 사용할 수있는 수학 함수는 다음 표에 나열되어 있습니다.
Sr. 아니. | 방법 및 설명 |
---|---|
1 | abs arg arg의 절대 값을 계산합니다. |
2 | acos arg arg의 아크 코사인을 계산합니다. |
삼 | asin arg arg의 아크 사인을 계산합니다. |
4 | atan arg arg의 아크 탄젠트를 계산합니다. |
5 | atan2 yx 인수 (y / x)의 몫의 아크 탄젠트를 계산합니다. |
6 | ceil arg 숫자보다 크거나 같은 가장 작은 정수를 계산합니다. |
7 | cos arg arg의 코사인을 계산합니다. |
8 | cosh arg arg의 쌍곡 코사인을 계산합니다. |
9 | double arg arg가 부동 소수점 값이면 계산하고, arg를 반환하고, 그렇지 않으면 arg를 부동 소수점으로 변환하고 변환 된 값을 반환합니다. |
10 | exp arg 지수 함수를 계산합니다 (e를 arg의 거듭 제곱으로 올림). |
11 | floor arg arg보다 작거나 같은 가장 큰 정수를 계산합니다. |
12 | fmod xy x를 y로 나눈 부동 소수점 나머지를 계산합니다. y가 0이면 오류가 반환됩니다. |
13 | hypot xy 직각 삼각형 sqrt (x * x + y * y)의 빗변 길이를 계산합니다. |
14 | int arg arg가 기계어와 같은 너비의 정수 값인지 계산하고, arg를 반환하고, 그렇지 않으면 arg를 정수로 변환합니다. |
15 | log arg arg의 자연 로그를 계산합니다. |
16 | log10 arg arg의 밑이 10 인 로그를 계산합니다. |
17 | pow xy x의 y 거듭 제곱 값을 계산합니다. x가 음수이면 y는 정수 값이어야합니다. |
18 | rand 0과 1 사이의 의사 난수를 계산합니다. |
19 | round arg 가장 가까운 정수로 반올림 된 arg 값을 계산합니다. |
20 | sin arg arg의 사인을 계산합니다. |
21 | sinh arg arg의 쌍곡 사인을 계산합니다. |
22 | sqrt arg arg의 제곱근을 계산합니다. arg는 양수 여야합니다. |
23 | srand arg 0과 1 사이의 의사 난수를 계산합니다. 정수 여야하는 arg는 rand의 난수 생성기에 대한 시드를 재설정하는 데 사용됩니다. |
24 | tan arg arg의 탄젠트를 계산합니다. |
25 | tanh arg arg의 쌍곡 탄젠트를 계산합니다. |
26 | wide arg arg가 아직 하나가 아닌 경우 arg에 대해 최소 64 비트 너비의 정수 값 (arg가 32 비트 숫자 인 경우 부호 확장으로)을 계산합니다. |
수학 함수를 사용하는 몇 가지 예는 다음과 같습니다.
#!/usr/bin/tclsh
namespace import ::tcl::mathfunc::*
puts [tan 10]
puts [pow 10 2]
puts [ceil 10.34]
puts [hypot 10 20]
puts [srand 45]
puts [log 10]
puts [srand 45]
위의 코드가 실행되면 다음과 같은 결과가 생성됩니다.
0.6483608274590866
100.0
11.0
22.360679774997898
0.0003521866166741525
2.302585092994046
0.0003521866166741525
시스템 기능
Tcl의 중요한 시스템 기능은 다음과 같습니다.
clock − 초 함수. 현재 시간을 초 단위로 반환합니다.
clock − 초를 날짜와 시간으로 포맷하는 포맷 함수.
clock − 입력 문자열을 스캔하여 초 단위로 변환하는 스캔 기능.
open − 파일을 여는 데 사용되는 기능.
exec − 시스템 명령을 실행하는 데 사용되는 기능.
close − 파일을 닫는 데 사용되는 기능.
위의 기능에 대한 몇 가지 예는 다음과 같습니다.
#!/usr/bin/tclsh
#get seconds
set currentTime [clock seconds]
puts $currentTime
#get format
puts "The time is: [clock format $currentTime -format %H:%M:%S]" puts "The date is: [clock format $currentTime -format %D]"
set date "Jun 15, 2014"
puts [clock scan $date -format {%b %d, %Y}] puts [exec ls] puts [exec dir] set a [open input.txt] puts [read $a];
puts $a close $a
위의 코드가 실행되면 다음과 같은 결과가 생성됩니다.
1402819756
The time is: 03:09:16
The date is: 06/15/2014
1402808400
input.txt
main.tcl
input.txt main.tcl
This is the file you can use to provide input to your program and later on open
it inside your program to process the input.
file3
다음 표는 날짜 및 시간의 형식을 지정하는 데 사용할 수있는 목록 문자열을 제공합니다.
Sr. 아니. | 형식 및 설명 |
---|---|
1 | %a 짧은 형식의 요일, 예 : Sun. |
2 | %A 완전한 형식의 요일 예 : 일요일. |
삼 | %b 짧은 형식의 달. |
4 | %B 완전한 형태의 달. |
5 | %d 날짜. |
6 | %j 율리우스 력의 날. |
7 | %m 숫자의 달. |
8 | %y 2 자리 연도입니다. |
9 | %Y 4 자리 연도입니다. |
10 | %H 24 시간 시계의 시간. |
11 | %I 12 시간 시계의 시간. |
12 | %M 의사록. |
13 | %S 초. |
14 | %p 오전 아니면 오후. |
15 | %D 숫자로 표시된 날짜, mm / dd / yy. |
16 | %r 12 시간제 시간입니다. |
17 | %R 초가없는 24 시간 시계의 시간. |
18 | %T 초가있는 24 시간 시계의 시간입니다. |
19 | %Z GMT, IST, EST 등과 같은 시간대 이름. |
"regexp"명령은 Tcl의 정규식을 일치시키는 데 사용됩니다. 정규식은 검색 패턴을 포함하는 일련의 문자입니다. 여러 규칙으로 구성되며 다음 표에서는 이러한 규칙과 해당 사용에 대해 설명합니다.
Sr. 아니. | 규칙 및 설명 |
---|---|
1 | x 정확히 일치. |
2 | [a-z] az의 모든 소문자. |
삼 | . 모든 캐릭터. |
4 | ^ 시작 문자열이 일치해야합니다. |
5 | $ 끝 문자열이 일치해야합니다. |
6 | \^ 특수 문자 ^와 일치하는 백래시 시퀀스. 마찬가지로 다른 문자에도 사용할 수 있습니다. |
7 | () 괄호 안에 위의 시퀀스를 추가하여 정규 표현식을 만듭니다. |
8 | x* 0 개 이상의 선행 x와 일치해야합니다. |
9 | x+ 앞의 x가 1 개 이상 일치해야합니다. |
10 | [a-z]? 앞의 x가 0 개 또는 1 개 일치해야합니다. |
11 | {digit} 이전 정규식 표현식의 정확한 숫자와 일치합니다. 0-9를 포함하는 숫자입니다. |
12 | {digit,} 이전 정규식 표현식의 3 자리 이상 발생과 일치합니다. 0-9를 포함하는 숫자입니다. |
13 | {digit1,digit2} 어커런스는 이전 정규식 표현식의 digit1 및 digit2 어커런스 사이의 범위와 일치합니다. |
통사론
정규식 구문은 다음과 같습니다.
regexp optionalSwitches patterns searchString fullMatch subMatch1 ... subMatchn
여기서 regex는 명령입니다. 나중에 옵션 스위치에 대해 살펴 보겠습니다. 패턴은 앞서 언급 한 규칙입니다. 검색 문자열은 정규식이 수행되는 실제 문자열입니다. 전체 일치는 일치하는 정규 표현식 결과의 결과를 보유하는 모든 변수입니다. Submatch1 to SubMatchn은 하위 일치 패턴의 결과를 보유하는 선택적 subMatch 변수입니다.
복잡한 예제로 들어가기 전에 몇 가지 간단한 예제를 살펴 보겠습니다. 모든 알파벳이있는 문자열의 간단한 예입니다. 다른 문자가 정규식을 만나면 검색이 중지되고 반환됩니다.
#!/usr/bin/tclsh
regexp {([A-Za-z]*)} "Tcl Tutorial" a b
puts "Full Match: $a"
puts "Sub Match1: $b"
위의 코드가 실행되면 다음과 같은 결과가 생성됩니다.
Full Match: Tcl
Sub Match1: Tcl
여러 패턴
다음 예는 여러 패턴을 검색하는 방법을 보여줍니다. 이것은 모든 알파벳 다음에 모든 문자 다음에 알파벳이 오는 패턴의 예입니다.
#!/usr/bin/tclsh
regexp {([A-Za-z]*).([A-Za-z]*)} "Tcl Tutorial" a b c
puts "Full Match: $a"
puts "Sub Match1: $b" puts "Sub Match2: $c"
위의 코드가 실행되면 다음과 같은 결과가 생성됩니다.
Full Match: Tcl Tutorial
Sub Match1: Tcl
Sub Match2: Tutorial
하위 패턴이 여러 패턴을 포함 할 수 있음을 보여주는 위 코드의 수정 된 버전은 다음과 같습니다.
#!/usr/bin/tclsh
regexp {([A-Za-z]*.([A-Za-z]*))} "Tcl Tutorial" a b c
puts "Full Match: $a" puts "Sub Match1: $b"
puts "Sub Match2: $c"
위의 코드가 실행되면 다음과 같은 결과가 생성됩니다.
Full Match: Tcl Tutorial
Sub Match1: Tcl Tutorial
Sub Match2: Tutorial
Regex 명령 용 스위치
Tcl에서 사용할 수있는 스위치 목록은 다음과 같습니다.
nocase − 대소 문자를 무시하는 데 사용됩니다.
indices − 일치하는 문자 대신 일치하는 하위 패턴의 위치를 저장합니다.
line− 새 줄 구분 일치. 개행 문자 뒤의 문자를 무시합니다.
start index − 검색 패턴 시작 오프셋을 설정합니다.
스위치의 끝을 표시
위의 예에서는 모든 알파벳에 대해 의도적으로 [AZ, az]를 사용했습니다. 아래에 표시된 것처럼 -nocase를 쉽게 사용할 수 있습니다.
#!/usr/bin/tclsh
regexp -nocase {([A-Z]*.([A-Z]*))} "Tcl Tutorial" a b c
puts "Full Match: $a"
puts "Sub Match1: $b" puts "Sub Match2: $c"
위의 코드가 실행되면 다음과 같은 결과가 생성됩니다.
Full Match: Tcl Tutorial
Sub Match1: Tcl Tutorial
Sub Match2: Tutorial
스위치를 사용하는 또 다른 예는 다음과 같습니다.
#!/usr/bin/tclsh
regexp -nocase -line -- {([A-Z]*.([A-Z]*))} "Tcl \nTutorial" a b
puts "Full Match: $a" puts "Sub Match1: $b"
regexp -nocase -start 4 -line -- {([A-Z]*.([A-Z]*))} "Tcl \nTutorial" a b
puts "Full Match: $a" puts "Sub Match1: $b"
위의 코드가 실행되면 다음과 같은 결과가 생성됩니다.
Full Match: Tcl
Sub Match1: Tcl
Full Match: Tutorial
Sub Match1: Tutorial
Tk는 툴킷을 의미하며 그래픽 사용자 인터페이스를 구축하는 데 도움이되는 크로스 플랫폼 GUI 위젯을 제공합니다. John Ousterhout에 의해 Tcl 스크립팅 언어의 확장으로 개발되었습니다. Tk는 버전이 서로 다른 Tcl과 독립적으로 개발 중이었습니다. 이전에는 v8.0에서 Tcl과 동기화하여 만들어졌습니다.
Tk의 특징
Linux, Mac OS, Unix 및 Microsoft Windows 운영 체제를 지원하는 크로스 플랫폼입니다.
- 오픈 소스입니다.
- 높은 수준의 확장 성을 제공합니다.
- 사용자 정의 할 수 있습니다.
- 구성 가능합니다.
- 그것은 많은 수의 위젯을 제공합니다.
- Tcl뿐만 아니라 다른 동적 언어와 함께 사용할 수 있습니다.
- GUI는 플랫폼간에 동일하게 보입니다.
Tk에 내장 된 애플리케이션
성공적인 대규모 애플리케이션이 Tcl / Tk에 구축되었습니다.
- Dashboard Soft 사용자 인터페이스
- 관계형 DB 용 Forms GUI
- 관계형 DB 용 Ad Hoc GUI
- 소프트웨어 / 하드웨어 시스템 설계
- Xtask-작업 관리
- Tcl과 Tk를 사용한 음악학
- 캘린더 앱
- Tk 메일
- Tk 디버거
일반적으로 모든 Mac 및 Linux Mac에는 Tk가 사전 설치되어 있습니다. 사용할 수 없거나 최신 버전이 필요한 경우 설치해야 할 수 있습니다. Windows에는 Tcl / Tk가 포함되어 있지 않으며이를 설치하려면 특정 바이너리를 사용해야 할 수 있습니다.
Tk 통역사
Tk 명령을 입력하고 한 줄씩 실행할 수있는 작은 프로그램입니다. 완전히 실행되는 컴파일러와 달리 오류가 발생하면 tcl 파일 실행을 중지합니다.
다음과 같이 helloWorld.tcl 파일을 만들어 보겠습니다. 이 프로그램을 첫 번째 프로그램으로 사용하고 선택한 플랫폼에서 실행합니다.
#!/usr/bin/wish
grid [ttk::button .mybutton -text "Hello World"]
다음 섹션에서는 사용 가능한 각 플랫폼에 Tcl / Tk를 설치하는 방법 만 설명합니다.
Windows에 설치
사용 가능한 Active Tcl / Tk 바이너리 목록에서 Windows 설치 프로그램 용 최신 버전을 다운로드합니다 . Active Tcl / Tk 커뮤니티 에디션은 개인용으로 무료입니다.
다운로드 한 실행 파일을 실행하여 Tcl 및 Tk를 설치합니다. 화면 지침에 따라 수행 할 수 있습니다.
이제 cd를 사용하여 파일이 포함 된 폴더로 전환 한 후 다음 단계를 사용하여 helloWorld.tcl이라는 Tcl 파일을 빌드하고 실행할 수 있습니다.
C:\Tcl> wish helloWorld.tcl
Enter 키를 누르면 아래와 같이 출력이 표시됩니다.
Linux에 설치
대부분의 Linux 운영 체제에는 Tk가 내장되어 있으며 해당 시스템에서 바로 시작할 수 있습니다. 사용할 수없는 경우 다음 명령을 사용하여 Tcl-Tk를 다운로드하여 설치할 수 있습니다.
$ yum install tcl tk
이제 다음을 사용하여 파일이 포함 된 폴더로 전환하여 helloWorld.tcl이라는 Tcl 파일을 빌드하고 실행할 수 있습니다. cd command 다음 단계를 사용하여-
$ wish helloWorld.tcl
Enter 키를 누르면 다음과 유사한 출력이 표시됩니다.
데비안 기반 시스템에 설치
OS에 미리 빌드되어 있지 않은 경우 다음 명령을 사용하여 Tcl-Tk를 다운로드하고 설치할 수 있습니다.
$ sudo apt-get install tcl tk
이제 다음을 사용하여 파일이 포함 된 폴더로 전환하여 helloWorld.tcl이라는 Tcl 파일을 빌드하고 실행할 수 있습니다. cd command 그리고 다음 단계를 사용하여-
$ wish helloWorld.tcl
Enter 키를 누르면 다음과 유사한 출력이 표시됩니다.
Mac OS X에 설치
사용 가능한 Active Tcl / Tk 바이너리 목록에서 Mac OS X 패키지 용 최신 버전을 다운로드합니다 . Active Tcl 커뮤니티 에디션은 개인용으로 무료입니다.
다운로드 한 실행 파일을 실행하여 Active Tcl을 설치합니다. 화면 지침에 따라 수행 할 수 있습니다.
이제 다음을 사용하여 파일이 포함 된 폴더로 전환하여 helloWorld.tcl이라는 Tcl 파일을 빌드하고 실행할 수 있습니다. cd command 다음 단계를 사용하여-
$ wish helloWorld.tcl
Enter 키를 누르면 아래와 같이 출력이 표시됩니다.
소스 파일에서 설치
바이너리 패키지를 사용할 수 없을 때 소스 파일에서 설치하는 옵션을 사용할 수 있습니다. 일반적으로 Windows 및 Mac OS X 용 Tk 바이너리를 사용하는 것이 선호되므로 유닉스 기반 시스템의 소스 컴파일 만 아래에 나와 있습니다.
소스 파일을 다운로드하십시오 .
이제 다운로드 한 폴더로 전환 한 후 다음 명령을 사용하여 추출, 컴파일 및 빌드합니다.
$ tar zxf tk8.6.1-src.tar.gz
$ cd tcl8.6.1 $ cd unix
$ ./configure —with-tcl=../../tcl8.6.1/unix —prefix=/opt —enable-gcc $ make
$ sudo make install
Note − 위의 명령 1과 2에서 다운로드 한 버전으로 파일 이름을 변경했는지 확인하십시오.
Tk에서는 일부 변수를 특수 변수로 분류하고 미리 정의 된 용도 / 기능을 가지고 있습니다. 특수 변수 목록은 다음과 같습니다.
Sr. 아니. | 특수 변수 및 설명 |
---|---|
1 | tk_library 표준 Tk 라이브러리의 위치를 설정하는 데 사용됩니다. |
2 | tk_patchLevel Tk 인터프리터의 현재 패치 수준을 나타냅니다. |
삼 | tk_strictMotif 0이 아닌 경우 Tk는 Motif 룩앤필을 최대한 가깝게 고수하려고합니다. |
4 | tk_version Tk 버전을 표시합니다. |
위의 특수 변수는 Tk 인터프리터에 대한 특별한 의미를 갖습니다.
Tk 특수 변수 사용 예
특수 변수의 예를 살펴 보겠습니다.
TK 버전
#!/usr/bin/wish
puts $tk_version
프로그램을 실행하면 아래와 같은 결과를 얻을 수 있습니다.
8.5
TK 라이브러리 경로
#!/usr/bin/wish
puts $tk_library
프로그램을 실행하면 아래와 같은 결과를 얻을 수 있습니다.
/Library/Frameworks/Tk.framework/Versions/8.6/Resources/Scripts
TK 패치 수준
#!/usr/bin/wish
puts $tk_patchLevel
프로그램을 실행하면 아래와 같은 결과를 얻을 수 있습니다.
8.6.1
TK STRICTMOTIF
#!/usr/bin/wish
puts $tk_strictMotif
프로그램을 실행하면 아래와 같은 결과를 얻을 수 있습니다.
0
Tk 기반 애플리케이션의 기본 구성 요소를 위젯이라고합니다. Tk에서 "창"과 "위젯"은 종종 같은 의미로 사용되기 때문에 구성 요소를 창이라고도합니다. Tk는 Tcl을 사용하여 그래픽 응용 프로그램을 만들기위한 풍부한 그래픽 구성 요소 세트를 제공하는 패키지입니다.
Tk는 버튼 및 메뉴와 같은 기본 GUI 위젯에서 데이터 표시 위젯에 이르기까지 다양한 위젯을 제공합니다. 위젯은 사용하기 쉬운 기본 구성이 있으므로 매우 구성 가능합니다.
Tk 애플리케이션은 위젯 계층 구조를 따르며, 여기에서 위젯의 수는 제한없이 다른 위젯 내에 배치 될 수 있고 해당 위젯은 다른 위젯 내에 배치 될 수 있습니다. Tk 프로그램의 기본 위젯은 루트 위젯이라고하며 TkRoot 클래스의 새 인스턴스를 만들어 만들 수 있습니다.
위젯 생성
위젯 생성 구문은 다음과 같습니다.
type variableName arguments options
여기서 유형은 버튼, 레이블 등과 같은 위젯 유형을 나타냅니다. 인수는 선택 사항 일 수 있으며 각 위젯의 개별 구문에 따라 필수입니다. 옵션은 크기에서 각 구성 요소의 형식에 이르기까지 다양합니다.
위젯 명명 규칙
위젯은 패키지 이름 지정과 유사한 구조를 사용합니다. Tk에서 루트 창은 마침표 (.)로 이름이 지정되고 창의 요소는 예를 들어 button의 이름이 .myButton1입니다. 변수 이름은 소문자, 숫자 또는 구두점 (마침표 제외)으로 시작해야합니다. 첫 번째 문자 뒤에 다른 문자는 대문자 또는 소문자, 숫자 또는 구두점 (마침표 제외)이 될 수 있습니다. 레이블을 시작하려면 소문자를 사용하는 것이 좋습니다.
색상 명명 규칙
색상은 빨강, 녹색 등과 같은 이름을 사용하여 선언 할 수 있습니다. #으로 표현하는 16 진수를 사용할 수도 있습니다. 16 진수 숫자는 3, 6, 9 또는 12 일 수 있습니다.
차원 규칙
기본 단위는 픽셀이며 치수를 지정하지 않을 때 사용됩니다. 다른 치수는 인치는 i, 밀리미터는 m, 센티미터는 c, 포인트는 p입니다.
일반적인 옵션
모든 위젯에 사용할 수있는 많은 공통 옵션이 있으며 아래 표에 나열되어 있습니다.
Sr. 아니. | 구문 및 설명 |
---|---|
1 | -background color 위젯의 배경색을 설정합니다. |
2 | -borderwidth width 3D 효과에서 테두리로 그리는 데 사용됩니다. |
삼 | -font fontDescriptor 위젯의 글꼴을 설정하는 데 사용됩니다. |
4 | -foreground color 위젯의 전경색을 설정하는 데 사용됩니다. |
5 | -height number 위젯의 높이를 설정하는 데 사용됩니다. |
6 | -highlightbackground color 위젯에 입력 포커스가 없을 때 위젯 주위에 그릴 색 사각형을 설정하는 데 사용됩니다. |
7 | -highlightcolor color 위젯에 입력 포커스가있을 때 위젯 주위에 그릴 색 사각형을 설정하는 데 사용됩니다. |
8 | -padx number 위젯의 padx를 설정합니다. |
9 | -pady number 위젯의 패디를 설정합니다. |
10 | -relief condition 이 위젯의 3D 릴리프를 설정합니다. 상태는 상승, 침몰, 평평, 융기, 단단한 또는 홈일 수 있습니다. |
11 | -text text 위젯의 텍스트를 설정합니다. |
12 | -textvariable varName 위젯과 관련된 변수입니다. 위젯의 텍스트가 변경되면 위젯의 텍스트로 변수가 설정됩니다. |
13 | -width number 위젯의 너비를 설정합니다. |
옵션에 대한 간단한 예가 아래에 나와 있습니다.
#!/usr/bin/wish
grid [label .myLabel -background red -text "Hello World" -relief ridge -borderwidth 3]
-padx 100 -pady 100
위의 프로그램을 실행하면 다음과 같은 결과가 나옵니다.
사용 가능한 위젯 목록은 다음과 같이 분류됩니다.
기본 위젯
Sr. 아니. | 위젯 및 설명 |
---|---|
1 | Label 한 줄의 텍스트를 표시하기위한 위젯. |
2 | Button 클릭 할 수 있고 작업을 트리거하는 위젯. |
삼 | Entry 한 줄의 텍스트를 입력으로 받아들이는 데 사용되는 위젯. |
4 | Message 여러 줄의 텍스트를 표시하기위한 위젯. |
5 | Text 여러 줄의 텍스트를 표시하고 선택적으로 편집하기위한 위젯. |
6 | Toplevel 창 관리자가 제공하는 모든 테두리와 장식이있는 창입니다. |
레이아웃 위젯
Sr. 아니. | 위젯 및 설명 |
---|---|
1 | Frame 다른 위젯을 보관할 컨테이너 위젯. |
2 | Place 원점 좌표와 정확한 크기로 특정 위치에 다른 위젯을 보관하는 위젯입니다. |
삼 | Pack 위젯을 상위 위젯에 배치하기 전에 블록으로 구성하는 간단한 위젯. |
4 | Grid 다른 방향으로 패킹되는 위젯을 중첩하는 위젯. |
선택 위젯
Sr. 아니. | 위젯 및 설명 |
---|---|
1 | Radiobutton 켜기 / 끄기 버튼 및 레이블 세트가있는 위젯. 그중 하나를 선택할 수 있습니다. |
2 | Checkbutton 켜기 / 끄기 버튼 및 레이블 세트가있는 위젯 (대부분 선택 가능) .. |
삼 | Menu 메뉴 항목의 홀더 역할을하는 위젯. |
4 | Listbox 하나 이상의 셀을 선택할 수있는 셀 목록을 표시하는 위젯입니다. |
메가 위젯
Sr. 아니. | 위젯 및 설명 |
---|---|
1 | Dialog 대화 상자를 표시하기위한 위젯. |
2 | Spinbox 사용자가 숫자를 선택할 수있는 위젯. |
삼 | Combobox 항목을 사용 가능한 선택 목록과 결합하는 위젯. |
4 | Notebook 색인 탭을 사용하여 여러 페이지 중 하나를 전환하는 데 도움이되는 탭 위젯. |
5 | Progressbar 파일 업로드와 같은 긴 작업의 진행 상황에 대한 시각적 피드백을 제공하는 위젯. |
6 | Treeview 트리 형태의 항목 계층 구조를 더 많이 표시하고 탐색 할 수있는 위젯입니다. |
7 | Scrollbar 텍스트 또는 캔버스 위젯없이 스크롤링 위젯. |
8 | Scale 슬라이더를 통해 숫자 값을 선택하는 비율 위젯. |
기타 위젯
Sr. 아니. | 위젯 및 설명 |
---|---|
1 | Canvas 그래픽과 이미지를 표시하기위한 그리기 위젯 .. |
다음 장에서 이러한 각 위젯에 대해 다룰 것입니다.
기본 위젯은 거의 모든 Tk 애플리케이션에서 사용할 수있는 일반적인 위젯입니다. 사용 가능한 기본 위젯 목록은 다음과 같습니다.
Sr. 아니. | 위젯 및 설명 |
---|---|
1 | 상표 한 줄의 텍스트를 표시하기위한 위젯. |
2 | 단추 클릭 할 수 있고 작업을 트리거하는 위젯. |
삼 | 기입 한 줄의 텍스트를 입력으로 받아들이는 데 사용되는 위젯. |
4 | 메시지 여러 줄의 텍스트를 표시하기위한 위젯. |
5 | 본문 여러 줄의 텍스트를 표시하고 선택적으로 편집하기위한 위젯. |
6 | 최상위 새로운 최상위 창인 프레임을 만드는 데 사용되는 위젯입니다. |
기본 위젯을 사용하는 간단한 Tk 예제가 아래에 나와 있습니다.
#!/usr/bin/wish
grid [label .myLabel -text "Label Widget" -textvariable labelText]
grid [text .myText -width 20 -height 5]
.myText insert 1.0 "Text\nWidget\n"
grid [entry .myEntry -text "Entry Widget"]
grid [message .myMessage -background red -foreground white -text "Message\nWidget"]
grid [button .myButton1 -text "Button" -command "set labelText clicked"]
위의 프로그램을 실행하면 다음과 같은 결과가 나옵니다.
레이아웃 위젯은 Tk 애플리케이션의 레이아웃을 처리하는 데 사용됩니다. 프레임 위젯은 다른 위젯을 그룹화하는 데 사용되며 배치, 팩 및 그리드는 창에 추가하는 것을 완벽하게 제어 할 수있는 레이아웃 관리자입니다. 사용 가능한 레이아웃 위젯 목록은 다음과 같습니다.
Sr. 아니. | 위젯 및 설명 |
---|---|
1 | 틀 다른 위젯을 보관할 컨테이너 위젯. |
2 | 장소 원점 좌표와 정확한 크기로 특정 위치에 다른 위젯을 보관하는 위젯입니다. |
삼 | 팩 위젯을 상위 위젯에 배치하기 전에 블록으로 구성하는 간단한 위젯. |
4 | 그리드 다른 방향으로 패킹되는 위젯을 중첩하는 위젯. |
레이아웃 위젯에 대한 간단한 Tk 예제가 아래에 나와 있습니다.
#!/usr/bin/wish
frame .myFrame1 -background red -relief ridge -borderwidth 8 -padx 10 -pady 10
-height 100 -width 100
frame .myFrame2 -background blue -relief ridge -borderwidth 8 -padx 10 -pady 10
-height 100 -width 50
pack .myFrame1
pack .myFrame2
위의 프로그램을 실행하면 다음과 같은 결과가 나옵니다.
선택 위젯은 Tk 애플리케이션에서 다른 옵션을 선택하는 데 사용됩니다. 사용 가능한 선택 위젯 목록은 다음과 같습니다.
Sr. 아니. | 위젯 및 설명 |
---|---|
1 | 라디오 버튼 켜기 / 끄기 버튼 및 레이블 세트가있는 위젯. 그중 하나를 선택할 수 있습니다. |
2 | 체크 버튼 켜기 / 끄기 버튼 및 레이블 세트가있는 위젯으로, 대부분을 선택할 수 있습니다. |
삼 | 메뉴 메뉴 항목의 홀더 역할을하는 위젯. |
4 | 리스트 박스 하나 이상의 셀을 선택할 수있는 셀 목록을 표시하는 위젯입니다. |
선택 위젯을 사용하는 간단한 Tk 예제가 아래에 나와 있습니다.
#!/usr/bin/wish
grid [frame .gender ]
grid [label .label1 -text "Male" -textvariable myLabel1 ]
grid [radiobutton .gender.maleBtn -text "Male" -variable gender -value "Male"
-command "set myLabel1 Male"] -row 1 -column 2
grid [radiobutton .gender.femaleBtn -text "Female" -variable gender -value "Female"
-command "set myLabel1 Female"] -row 1 -column 3
.gender.maleBtn select
grid [label .myLabel2 -text "Range 1 not selected" -textvariable myLabelValue2 ]
grid [checkbutton .chk1 -text "Range 1" -variable occupied1 -command {if {$occupied1 } {
set myLabelValue2 {Range 1 selected}
} else {
set myLabelValue2 {Range 1 not selected}
} }]
proc setLabel {text} {
.label configure -text $text
}
위의 프로그램을 실행하면 다음과 같은 결과가 나옵니다.
캔버스는 그리기 영역을 제공하는 데 사용됩니다. 캔버스 위젯의 구문은 다음과 같습니다.
canvas canvasName options
옵션
캔버스 위젯에 사용할 수있는 옵션은 다음 표에 나열되어 있습니다.
Sr. 아니. | 구문 및 설명 |
---|---|
1 | -background color 위젯의 배경색을 설정합니다. |
2 | -closeenough distance 표시 가능한 항목에 대한 마우스 커서의 근접성을 설정합니다. 기본값은 1.0 픽셀입니다. 이 값은 분수 일 수 있으며 양수 여야합니다. |
삼 | -scrollregion boundingBox 이 캔버스의 전체 영역에 대한 경계 상자입니다. |
4 | -height number 위젯의 높이를 설정하는 데 사용됩니다. |
5 | -width number 위젯의 너비를 설정합니다. |
6 | -xscrollincrement size 스크롤이 요청 될 때 가로로 스크롤 할 양입니다. |
7 | -yscrollincrement size 스크롤을 요청할 때 세로로 스크롤 할 양입니다. |
캔버스 위젯의 간단한 예는 다음과 같습니다.
#!/usr/bin/wish
canvas .myCanvas -background red -width 100 -height 100
pack .myCanvas
위의 프로그램을 실행하면 다음과 같은 결과가 나옵니다.
캔버스에서 그리기위한 위젯
캔버스에 그리는 데 사용할 수있는 위젯 목록은 다음과 같습니다.
Sr. 아니. | 위젯 및 설명 |
---|---|
1 | 선 선을 그립니다. |
2 | 호 호를 그립니다. |
삼 | 직사각형 직사각형을 그립니다. |
4 | 타원 타원을 그립니다. |
5 | 다각형 다각형을 그립니다. |
6 | 본문 텍스트를 그립니다. |
7 | 비트 맵 비트 맵을 그립니다. |
8 | 영상 이미지를 그립니다. |
다른 캔버스 위젯을 사용한 예는 다음과 같습니다.
#!/usr/bin/wish
canvas .myCanvas -background red -width 200 -height 200
pack .myCanvas
.myCanvas create arc 10 10 50 50 -fill yellow
.myCanvas create line 10 30 50 50 100 10 -arrow both -fill yellow -smooth true
-splinesteps 2
.myCanvas create oval 50 50 100 80 -fill yellow
.myCanvas create polygon 50 150 100 80 120 120 100 190 -fill yellow -outline green
.myCanvas create rectangle 150 150 170 170 -fill yellow
.myCanvas create text 170 20 -fill yellow -text "Hello" -font {Helvetica -18 bold}
.myCanvas create bitmap 180 50 -bitmap info
위의 프로그램을 실행하면 다음과 같은 결과가 나옵니다.
메가 위젯에는 일부 대규모 Tk 애플리케이션에서 종종 필요한 많은 복잡한 위젯이 포함됩니다. 사용 가능한 메가 위젯 목록은 다음과 같습니다.
Sr. 아니. | 위젯 및 설명 |
---|---|
1 | 대화 대화 상자를 표시하기위한 위젯. |
2 | 스핀 박스 사용자가 숫자를 선택할 수있는 위젯. |
삼 | 콤보 박스 항목을 사용 가능한 선택 목록과 결합하는 위젯. |
4 | 공책 색인 탭을 사용하여 여러 페이지 중 하나를 전환하는 데 도움이되는 탭 위젯. |
5 | 진행 표시 줄 파일 업로드와 같은 긴 작업의 진행 상황에 대한 시각적 피드백을 제공하는 위젯. |
6 | 트 리뷰 트리 형태의 항목 계층 구조를 더 많이 표시하고 탐색 할 수있는 위젯입니다. |
7 | 스크롤 바 텍스트 또는 캔버스 위젯없이 스크롤링 위젯. |
8 | 규모 슬라이더를 통해 숫자 값을 선택하는 비율 위젯. |
메가 위젯을 사용한 간단한 Tk 예제가 아래에 나와 있습니다.
#!/usr/bin/wish
ttk::treeview .tree -columns "Creator Year" -displaycolumns "Year Creator"
.tree heading Creator -text "Creator" -anchor center
.tree heading Year -text "Year" -anchor center
pack .tree
.tree insert {} end -id Languages -text "Languages"
.tree insert Languages end -text C -values [list "Dennis Ritchie" "1990"]
proc scaleMe {mywidget scaleValue} {
$mywidget configure -length $scaleValue
}
pack [scale .s2 -from 100.0 -to 200.0 -length 100 -background yellow -borderwidth 5
-font{Helvetica -18 bold} -foreground red -width 40 -relief ridge -orien horizontal
-variable a -command "scaleMe .s2" ]
pack [ttk::progressbar .p1 -orient horizontal -length 200 -mode indeterminate -value 90]
pack [ttk::progressbar .p2 -orient horizontal -length 200 -mode determinate -variable a
-maximum 75 -value 20]
위의 프로그램을 실행하면 다음과 같은 결과가 나옵니다.
텍스트 표시를 지원하는 여러 위젯이 있습니다. 이들 중 대부분은 글꼴 속성 옵션을 제공합니다. 글꼴을 만드는 구문은 다음과 같습니다.
font create fontName options
옵션
글꼴 생성에 사용할 수있는 옵션은 다음 표에 나열되어 있습니다.
Sr. 아니. | 구문 및 설명 |
---|---|
1 | -family familyName 글꼴 패밀리의 이름입니다. |
2 | -size number 글꼴 크기입니다. |
삼 | -weight level 글꼴의 두께입니다. |
글꼴 생성에 대한 간단한 예는 다음과 같습니다.
#!/usr/bin/wish
font create myFont -family Helvetica -size 18 -weight bold
pack [label .myLabel -font myFont -text "Hello World"]
위의 프로그램을 실행하면 다음과 같은 결과가 나옵니다.
사용 가능한 모든 글꼴을 얻으려면 다음 명령을 사용할 수 있습니다.
#!/usr/bin/wish
puts [font families]
위의 명령을 실행하면 다음과 같은 출력이 표시됩니다.
{Abadi MT Condensed Extra Bold} {Abadi MT Condensed Light} {Al Bayan} {Al Nile}
{Al Tarikh} {American Typewriter} {Andale Mono} Arial {Arial Black}
{Arial Hebrew} {Arial Narrow} {Arial Rounded MT Bold} {Arial Unicode MS}
Athelas Avenir {Avenir Next} {Avenir Next Condensed} Ayuthaya Baghdad {Bangla MN}
{Bangla Sangam MN} {Baoli SC} Baskerville {Baskerville Old Face} Batang {Bauhaus 93}
Beirut {Bell MT} {Bernard MT Condensed} BiauKai {Big Caslon} {Book Antiqua}
{Bookman Old Style} {Bookshelf Symbol 7} Braggadocio {Britannic Bold} {Brush Script MT}
Calibri {Calisto MT} Cambria {Cambria Math} Candara Century {Century Gothic}
{Century Schoolbook} Chalkboard {Chalkboard SE} Chalkduster {Charcoal CY} Charter
Cochin {Colonna MT} {Comic Sans MS} Consolas Constantia {Cooper Black} Copperplate
{Copperplate Gothic Bold} {Copperplate Gothic Light} Corbel {Corsiva Hebrew} Courier
{Courier New} {Curlz MT} Damascus {DecoType Naskh} Desdemona {Devanagari MT}
{Devanagari Sangam MN} Didot {DIN Alternate} {DIN Condensed} {Diwan Kufi} {Diwan Thuluth}
{Edwardian Script ITC} {Engravers MT} {Euphemia UCAS} Eurostile Farah Farisi
{Footlight MT Light} {Franklin Gothic Book} {Franklin Gothic Medium}
Futura Gabriola Garamond {GB18030 Bitmap} {Geeza Pro} Geneva {Geneva CY}
Georgia {Gill Sans} {Gill Sans MT} {Gloucester MT Extra Condensed}
{Goudy Old Style} {Gujarati MT} {Gujarati Sangam MN} Gulim GungSeo {Gurmukhi MN}
{Gurmukhi MT} {Gurmukhi Sangam MN} Haettenschweiler {Hannotate SC} {Hannotate TC}
{HanziPen SC} {HanziPen TC} Harrington HeadLineA Hei {Heiti SC} {Heiti TC}
Helvetica {Helvetica CY} {Helvetica Neue} Herculanum {Hiragino Kaku Gothic Pro}
{Hiragino Kaku Gothic ProN} {Hiragino Kaku Gothic Std} {Hiragino Kaku Gothic StdN}
{Hiragino Maru Gothic Pro} {Hiragino Maru Gothic ProN}
{Hiragino Mincho Pro} {Hiragino Mincho ProN} {Hiragino Sans GB}
{Hoefler Text} Impact {Imprint MT Shadow} InaiMathi {Iowan Old Style} Kai Kailasa
{Kaiti SC} {Kaiti TC} {Kannada MN} {Kannada Sangam MN} Kefa {Khmer MN} {Khmer Sangam MN}
{Kino MT} Kokonor Krungthep KufiStandardGK {Lantinghei SC} {Lantinghei TC} {Lao MN}
{Lao Sangam MN} {Libian SC} {LiHei Pro} {LiSong Pro} {Lucida Blackletter} {Lucida Bright}
{Lucida Calligraphy} {Lucida Console} {Lucida Fax} {Lucida Grande} {Lucida Handwriting}
{Lucida Sans} {Lucida Sans Typewriter} {Lucida Sans Unicode} {Malayalam MN}
{Malayalam Sangam MN} Marion {Marker Felt} Marlett {Matura MT Script Capitals}
Meiryo Menlo {Microsoft Sans Serif} Mishafi Mistral {Modern No. 20} Monaco {MS Gothic}
{MS Mincho} {MS PGothic} {MS PMincho} {MS Reference Sans Serif} {MS Reference Specialty}
Mshtakan {MT Extra} Muna {Myanmar MN} {Myanmar Sangam MN} Nadeem {Nanum Brush Script}
{Nanum Gothic} {Nanum Myeongjo} {Nanum Pen Script} {New Peninim MT} {News Gothic MT}
Noteworthy Onyx Optima {Oriya MN} {Oriya Sangam MN} Osaka Palatino {Palatino Linotype}
Papyrus PCMyungjo Perpetua {Perpetua Titling MT} PilGi {Plantagenet Cherokee}
Playbill PMingLiU {PT Mono} {PT Sans} {PT Sans Caption} {PT Sans Narrow} {PT Serif}
{PT Serif Caption} Raanana Rockwell {Rockwell Extra Bold} Sana Sathu {Savoye LET}
Seravek Silom SimSun {Sinhala MN} {Sinhala Sangam MN} Skia {Snell Roundhand} {Songti SC}
{Songti TC} Stencil STFangsong STHeiti STIXGeneral STIXIntegralsD STIXIntegralsSm
STIXIntegralsUp STIXIntegralsUpD STIXIntegralsUpSm STIXNonUnicode STIXSizeFiveSym
STIXSizeFourSym STIXSizeOneSym STIXSizeThreeSym STIXSizeTwoSym STIXVariants STKaiti
STSong Superclarendon Symbol Tahoma {Tamil MN} {Tamil Sangam MN} TeamViewer8 {Telugu MN}
{Telugu Sangam MN} Thonburi Times {Times New Roman} {Trebuchet MS} {Tw Cen MT} Verdana
Waseem {Wawati SC} {Wawati TC} Webdings {Weibei SC} {Weibei TC} {Wide Latin} Wingdings
{Wingdings 2} {Wingdings 3} {Xingkai SC} {Yuanti SC} YuGothic YuMincho {Yuppy SC}
{Yuppy TC} {Zapf Dingbats} Zapfino {Apple Braille} {Apple Chancery} {Apple Color Emoji}
{Apple LiGothic} {Apple LiSung} {Apple SD Gothic Neo} {Apple Symbols}
AppleGothic AppleMyungjo {Monotype Corsiva} {Monotype Sorts}
이미지 위젯은 이미지를 만들고 조작하는 데 사용됩니다. 이미지를 만드는 구문은 다음과 같습니다.
image create type name options
위의 구문에서 유형은 사진 또는 비트 맵이고 이름은 이미지 식별자입니다.
옵션
이미지 생성에 사용할 수있는 옵션은 다음 표에 나열되어 있습니다.
Sr. 아니. | 구문 및 설명 |
---|---|
1 | -file fileName 이미지 파일 이름의 이름입니다. |
2 | -height number 위젯의 높이를 설정하는 데 사용됩니다. |
삼 | -width number 위젯의 너비를 설정합니다. |
4 | -data string Base 64로 인코딩 된 문자열의 이미지입니다. |
이미지 위젯의 간단한 예는 다음과 같습니다.
#!/usr/bin/wish
image create photo imgobj -file "/Users/rajkumar/Desktop/F Drive/pictur/vb/Forests/
680049.png" -width 400 -height 400
pack [label .myLabel]
.myLabel configure -image imgobj
위의 프로그램을 실행하면 다음과 같은 결과가 나옵니다.
이미지에 사용할 수있는 기능은 다음 표에 나열되어 있습니다.
Sr. 아니. | 구문 및 설명 |
---|---|
1 | image delete imageName 메모리 및 관련 위젯에서 이미지를 시각적으로 삭제합니다. |
2 | image height imageName 이미지의 높이를 반환합니다. |
삼 | image width imageName 이미지의 너비를 반환합니다. |
4 | image type imageName 이미지의 유형을 반환합니다. |
5 | image names 메모리에있는 이미지 목록을 반환합니다. |
위의 이미지 위젯 명령을 사용하는 간단한 예는 다음과 같습니다.
#!/usr/bin/wish
image create photo imgobj -file "/Users/rajkumar/images/680049.png"
-width 400 -height 400
pack [label .myLabel]
.myLabel configure -image imgobj
puts [image height imgobj]
puts [image width imgobj]
puts [image type imgobj]
puts [image names]
image delete imgobj
이미지는 "image delete imgobj"명령이 실행되면 시각적으로 그리고 메모리에서 삭제됩니다. 콘솔에서 출력은 다음과 같습니다.
400
400
photo
imgobj ::tk::icons::information ::tk::icons::error ::tk::icons::
warning ::tk::icons::question
가장 간단한 형태의 이벤트는 명령을 사용하여 처리됩니다. 이벤트 처리에 대한 간단한 예는 버튼을 사용한 이벤트 처리이며 다음과 같습니다.
#!/usr/bin/wish
proc myEvent { } {
puts "Event triggered"
}
pack [button .myButton1 -text "Button 1" -command myEvent]
위의 프로그램을 실행하면 다음과 같은 결과가 나옵니다.
지연 텍스트 애니메이션 이벤트를 표시하는 간단한 프로그램은 다음과 같습니다.
#!/usr/bin/wish
proc delay {} {
for {set j 0} {$j < 100000} {incr j} {}
}
label .myLabel -text "Hello................" -width 25
pack .myLabel
set str "Hello................"
for {set i [string length $str]} {$i > -2} {set i [expr $i-1]} { .myLabel configure -text [string range $str 0 $i]
update
delay
}
프로그램을 실행하면 애니메이션 방식으로 다음과 같은 출력을 얻을 수 있습니다.
지연 후 이벤트
지연 후 이벤트 구문은 다음과 같습니다.
after milliseconds number command
다음은 지연 이벤트 후 표시되는 간단한 프로그램입니다.
#!/usr/bin/wish
proc addText {} {
label .myLabel -text "Hello................" -width 25
pack .myLabel
}
after 1000 addText
프로그램을 실행하면 1 초 후에 다음과 같은 출력이 나타납니다.
다음과 같이 after cancel 명령을 사용하여 이벤트를 취소 할 수 있습니다.
#!/usr/bin/wish
proc addText {} {
label .myLabel -text "Hello................" -width 25
pack .myLabel
}
after 1000 addText
after cancel addText
이벤트 바인딩
이벤트 바인딩 구문은 다음과 같습니다.
bind arguments
키보드 이벤트 예
#!/usr/bin/wish
bind . {puts "Key Pressed: %K "}
프로그램을 실행하고 문자 X를 누르면 다음과 같은 결과가 나옵니다.
Key Pressed: X
마우스 이벤트 예
#!/usr/bin/wish
bind . {puts "Button %b Pressed : %x %y "}
프로그램을 실행하고 마우스 왼쪽 버튼을 누르면 다음과 유사한 출력이 표시됩니다.
Button 1 Pressed : 89 90
버튼 예제와 이벤트 연결
#!/usr/bin/wish
proc myEvent { } {
puts "Event triggered"
}
pack [button .myButton1 -text "Button 1" -command myEvent]
bind . ".myButton1 invoke"
프로그램을 실행하고 Enter 키를 누르면 다음과 같은 출력이 표시됩니다.
Event triggered
창 관리자는 최상위 창을 처리하는 데 사용됩니다. 창의 크기, 위치 및 기타 속성을 제어하는 데 도움이됩니다. Tk에서. 메인 창을 참조하는 데 사용됩니다. 창 명령 구문은 다음과 같습니다.
wm option window arguments
Tk wm 명령에 사용할 수있는 옵션 목록은 다음 표에 나와 있습니다.
Sr. 아니. | 구문 및 설명 |
---|---|
1 | aspect windowName a b c d 너비 / 높이 비율을 a / b와 c / d 사이로 유지하려고합니다. |
2 | geometry windowName geometryParams 창에 대한 형상을 설정하는 데 사용합니다. |
삼 | grid windowName w h dx dy 그리드 크기를 설정합니다. |
4 | group windowName leaderName leaderName은 관련 창 그룹의 리더를 제공합니다. |
5 | deiconify windowName 최소화하면 화면을 정상으로 가져옵니다. |
6 | iconify windowName 창을 최소화합니다. |
7 | state windowName 창의 현재 상태를 반환합니다. |
8 | withdraw windowName 창을 매핑 해제하고 메모리에서 세부 정보를 제거합니다. |
9 | iconbitmap windowName image 아이콘 비트 맵을 설정하거나 반환합니다. |
10 | iconPhoto windowName image 아이콘 사진을 설정하거나 반환합니다. |
11 | command windowName commandString WM_COMMAND 속성에 시작 명령을 기록합니다. |
12 | protocol windowName arguments WM_DELETE_WINDOW 일 수있는 프로토콜 요청 이름을 처리하는 명령을 등록합니다. WM_SAVE_YOURSELF, WM_TAKE_FOCUS. 예 : wm 프로토콜. WM_DELETE_WINDOW 종료합니다. |
13 | minsize windowName size 최소 창 크기를 결정합니다. |
14 | maxsize windowName size 최대 창 크기를 결정합니다. |
15 | title windowName titleText 창의 제목을 결정합니다. |
16 | attributes subOptions 알파, 전체 화면 등과 같은 많은 속성을 사용할 수 있습니다. |
위의 명령 중 일부는 다음 예제에서 사용됩니다.
#!/usr/bin/wish
wm maxsize . 800 800
wm minsize . 300 300
wm title . "Hello"
wm attributes . -alpha ".90"
wm geometry . 300x200+100+100
위의 프로그램을 실행하면 다음과 같은 결과가 나옵니다.
보시다시피 알파는 사용 가능한 속성 중 하나입니다. 일반적으로 사용되는 하위 명령 목록은 다음과 같습니다.
Sr. 아니. | 구문 및 설명 |
---|---|
1 | -alpha number 윈도우의 알파를 설정합니다. |
2 | -fullscreen number 숫자는 일반 화면의 경우 0이거나 전체 화면의 경우 1입니다. |
삼 | -topmost number 윈도우가 최상위인지 여부를 설정하거나 반환하며 값은 0 또는 1 일 수 있습니다. |
창 생성
최상위 명령을 사용하여 창을 만들 수 있으며 예제는 다음과 같습니다.
#!/usr/bin/wish
toplevel .t
위의 프로그램을 실행하면 다음과 같은 결과가 나옵니다.
창 파괴
destroy 명령을 사용하여 창을 파괴 할 수 있으며 예제는 다음과 같습니다.
#!/usr/bin/wish
destroy .t
위의 명령은 .t.
형상 관리자는 창 및 기타 프레임의 형상을 관리하는 데 사용됩니다. 창과 프레임의 위치와 크기를 처리하는 데 사용할 수 있습니다. 이를 위해 레이아웃 위젯 이 사용됩니다.
포지셔닝 및 크기 조정
창 위치 지정 및 크기 조정 구문은 다음과 같습니다.
wm geometry . wxh+/-x+/-y
여기서 w는 너비를, h는 높이를 나타냅니다. 그 다음에는 화면의 x 위치를 나타내는 숫자와 함께 '+'또는 '-'기호가 표시됩니다. 마찬가지로 숫자가있는 다음 '+'또는 '-'기호는 화면의 y 위치를 나타냅니다.
위의 진술에 대한 간단한 예가 아래에 나와 있습니다.
#!/usr/bin/wish
wm geometry . 300x200+100+100
위의 프로그램을 실행하면 다음과 같은 결과가 나옵니다.
그리드 기하학
그리드 지오메트리의 구문은 다음과 같습니다.
grid gridName -column number -row number -columnspan number -rowspan number
column, row, columnspan 또는 rowspan은 그리드 지오메트리를 제공하는 데 도움이됩니다.
위의 문장에 대한 간단한 예가 아래에 나와 있습니다.
#!/usr/bin/wish
frame .myFrame1 -background red -height 100 -width 100
frame .myFrame2 -background blue -height 100 -width 50
grid .myFrame1 -columnspan 10 -rowspan 10 -sticky w
grid .myFrame2 -column 10 -row 2
위의 프로그램을 실행하면 다음과 같은 결과가 나옵니다.