19.7. Tcl/Tk 시작하기
19.7.1. Tcl/Tk 소개
Tcl(도구 명령 언어) 은 동적 프로그래밍 언어입니다. 이 언어의 인터프리터는 C 라이브러리와 함께 tcl
패키지에서 제공합니다.
Tk ( T cl/Tk)와 결합된 Tcl을 사용하면 크로스 플랫폼 GUI 애플리케이션을 생성할 수 있습니다. TK 는 tk
패키지에서 제공합니다.
Tk 는 다음 중 하나를 참조할 수 있습니다.
- 여러 언어를 위한 프로그래밍 툴킷
- C, Ruby, Perl, Python과 같은 여러 언어에 사용할 수 있는 Tk C 라이브러리 바인딩
- Tk 콘솔을 인스턴스화하는 wish 인터프리터
- 특정 Tcl 인터프리터에 여러 새 명령을 추가하는 Tk 확장
Tcl/Tk에 대한 자세한 내용은 Tcl/Tk 설명서 또는 Tcl/Tk 설명서 웹 페이지를 참조하십시오.
19.7.2. Tcl/Tk 8.6에서 주요 변경 사항
Red Hat Enterprise Linux 7에서 Tcl/Tk 8.5 를 사용했습니다. Red Hat Enterprise Linux 8에서는 기본 OS 리포지터리에서 Tcl/Tk 버전 8.6 이 제공됩니다.
Tcl/Tk 8.5 에 비해 Tcl/Tk 8.6 의 주요 변경 사항은 다음과 같습니다.
- 객체 지향 프로그래밍 지원
- Stackless 평가 구현
- 향상된 예외 처리
- Tcl로 빌드 및 설치되는 타사 패키지 모음
- 다중 스레드 작업 활성화
- SQL 데이터베이스 기반 스크립트 지원
- IPv6 네트워킹 지원
- 내장된 Zlib 압축
목록 처리
Tcl 컨테이너에 대한 변환 표현식을 허용하는
lmap
및dict 맵
이라는 두 가지 새 명령을 사용할 수 있습니다.스크립트 별 스택 채널
두 개의 새 명령인
chan push
및chan pop
을 사용할 수 있으므로 I/O 채널로의 변환을 추가하거나 제거할 수 있습니다.
Tk 의 주요 변경 사항은 다음과 같습니다.
- 내장 이미지 지원
사용 중인 창
창 또는 위젯에 대한 사용자 상호 작용을 비활성화하고 사용 중인 커서를 표시하는 새 명령인
tk busy
를 사용할 수 있습니다.- 새로운 글꼴 선택 대화 인터페이스
- 눈여겨진 텍스트 지원
- 팔레트 지원에 대한 이동
Tcl 8.5 및 Tcl 8.6의 변경 내용은 Tcl/Tk 8.6 의 변경 사항을 참조하십시오.
19.7.3. Tcl/Tk 8.6으로 마이그레이션
Red Hat Enterprise Linux 7에서 Tcl/Tk 8.5 를 사용했습니다. Red Hat Enterprise Linux 8에서는 기본 OS 리포지터리에서 Tcl/Tk 버전 8.6 이 제공됩니다.
이 섹션에서는 다음을 위해 Tcl/Tk 8.6 로의 마이그레이션 경로에 대해 설명합니다.
- Tcl 확장을 작성하거나 애플리케이션에 Tcl 인터프리터를 포함하는 개발자
- Tcl/Tk를 사용하여 작업을 스크립팅하는 사용자
19.7.3.1. Tcl 확장 개발자를 위한 마이그레이션 경로
코드를 Tcl 8.6 과 호환하려면 다음 절차를 사용하십시오.
절차
interp
구조를 사용하도록 코드를 다시 작성합니다. 예를 들어 코드가interperrorline인
경우 다음 함수를 사용하도록 다시 작성합니다.Tcl_GetErrorLine(interp)
이는 Tcl 8.6 이
인터랩 구조의
멤버에 대한 직접 액세스를 제한하기 때문에 필요합니다.코드를 Tcl 8.5 및 Tcl 8.6 과 모두 호환하려면 C 또는 C++ 애플리케이션의 헤더 파일에서 다음 코드 스니펫을 사용하거나 Tcl 라이브러리를 포함하는 확장 프로그램의 코드 조각을 사용하십시오.
# include <tcl.h> # if !defined(Tcl_GetErrorLine) # define Tcl_GetErrorLine(interp) (interp→errorLine) # endif
19.7.3.2. Tcl/Tk를 사용하여 작업을 스크립팅하는 사용자의 마이그레이션 경로
Tcl 8.6 에서는 대부분의 스크립트가 이전 버전의 Tcl 과 동일한 방식으로 작동합니다.
코드를 Tcl 8.6 으로 마이그레이션하려면 다음 절차를 사용하십시오.
절차
이식 코드를 작성할 때 Tk 8.6 에서 더 이상 지원되지 않는 명령을 사용하지 않도록하십시오 :
tkIconList_Arrange tkIconList_AutoScan tkIconList_Btn1 tkIconList_Config tkIconList_Create tkIconList_CtrlBtn1 tkIconList_Curselection tkIconList_DeleteAll tkIconList_Double1 tkIconList_DrawSelection tkIconList_FocusIn tkIconList_FocusOut tkIconList_Get tkIconList_Goto tkIconList_Index tkIconList_Invoke tkIconList_KeyPress tkIconList_Leave1 tkIconList_LeftRight tkIconList_Motion1 tkIconList_Reset tkIconList_ReturnKey tkIconList_See tkIconList_Select tkIconList_Selection tkIconList_ShiftBtn1 tkIconList_UpDown
/usr/share/tk8.6/unsupported.tcl
파일에서 지원되지 않는 명령 목록을 확인할 수 있습니다.