message — 비상호작용 텍스트 위젯 만들기
message — 비상호작용 텍스트 위젯 만들기
여러 줄의 안내 문구를 자연스럽게 줄바꿈해서 보여주고 싶을 때가 있어요. Tk의 message 위젯은 텍스트 문자열을 표시하는 비상호작용 위젯으로, label 위젯과 달리 문단을 원하는 종횡비(aspect ratio)에 맞춰 단어 경계에서 자동으로 줄바꿈해 줍니다.
본문
개요
message pathName ?options?
message 명령은 pathName 인자로 주어진 새 창을 만들고 message 위젯으로 만듭니다. 색, 글꼴, 텍스트, 초기 relief 같은 message의 측면을 구성하는 옵션을 명령줄이나 옵션 데이터베이스로 지정할 수 있어요. message 명령은 pathName 인자를 돌려줍니다. 호출 시점에 pathName이라는 창이 존재해서는 안 되지만, pathName의 부모는 존재해야 해요.
message는 텍스트 문자열을 표시하는 위젯입니다. label 위젯과 구별되는 세 가지 특별한 기능이 있어요.
첫째, 문자열을 줄로 나눠서 창의 주어진 종횡비를 맞춥니다. 줄바꿈은 가능하면 단어 경계에서 이뤄져요(한 단어도 한 줄에 들어가지 못하면 단어가 여러 줄로 나뉩니다). 문자열의 새줄 문자는 강제 줄바꿈을 일으키며, 예를 들어 표시에 빈 줄을 남기는 데 사용할 수 있어요.
둘째 기능은 정렬(justification)입니다. 텍스트는 왼쪽 정렬(각 줄이 창 왼쪽에서 시작), 줄 단위 중앙 정렬, 오른쪽 정렬(각 줄이 창 오른쪽에서 끝)로 표시할 수 있어요.
셋째 기능은 제어 문자와 비출력 문자를 특별히 처리한다는 점입니다. 탭 문자는 다음 8문자 경계에 맞춰 정렬될 만큼의 빈 공간으로 대체됩니다. 새줄은 줄바꿈을 일으켜요. 그 밖의 제어 문자(ASCII 코드 0x20 미만)와 글꼴에 정의되지 않은 문자는 \xhh 형태의 4문자 시퀀스로 표시되는데, 여기서 hh는 그 문자에 해당하는 두 자리 16진수입니다. 글꼴이 "0123456789abcdef\x"의 모든 문자를 포함하지 않는 드문 경우에는 제어 문자와 정의되지 않은 문자가 아예 표시되지 않아요.
표준 옵션
-anchor, -background 또는 -bg, -borderwidth 또는 -bd, -cursor, -font, -foreground 또는 -fg, -highlightbackground, -highlightcolor, -highlightthickness, -padx, -pady, -relief, -takefocus, -text, -textvariable 옵션이 표준 옵션으로 제공됩니다.
위젯 전용 옵션
-aspect (데이터베이스 이름 aspect, 클래스 Aspect) — 텍스트의 원하는 종횡비를 나타내는 음이 아닌 정수 값을 지정합니다. 종횡비는 100*width/height로 나타내요. 100이면 텍스트가 세로만큼 가로로 넓다는 뜻, 200이면 세로의 두 배만큼 넓다는 뜻, 50이면 세로가 가로의 두 배라는 뜻입니다. -width 옵션을 지정하지 않으면 텍스트의 줄 길이를 고르는 데 사용됩니다. 기본값은 150이에요.
-justify (데이터베이스 이름 justify, 클래스 Justify) — 텍스트 줄을 어떻게 정렬할지 지정합니다. left, center, right 중 하나여야 하고, 기본값은 left예요. 이 옵션은 -anchor, -aspect, -padx, -pady, -width 옵션과 함께 작동해서 창 안에서 텍스트를 다양하게 배치해요. -aspect와 -width 옵션은 텍스트 표시에 필요한 화면 공간의 양을 결정하고, -anchor, -padx, -pady 옵션은 이 직사각형 영역을 위젯 창 안 어디에 표시할지, -justify 옵션은 각 줄을 그 직사각형 영역 안에서 어떻게 표시할지 정합니다.
예를 들어 -anchor가 e이고 -justify가 left이며, message 창이 텍스트에 필요한 것보다 훨씬 크다고 해보죠. 텍스트는 모든 줄의 왼쪽 끝이 정렬되고 가장 긴 줄의 오른쪽 끝이 창 오른쪽에서 -padx만큼 떨어진 곳에 오도록 표시됩니다. 전체 텍스트 블록은 창의 세로 범위에서 중앙에 오게 돼요.
-width (데이터베이스 이름 width, 클래스 Width) — 창에서 줄의 길이를 지정합니다. 값은 Tk_GetPixels이 받아들이는 형태 중 하나일 수 있어요. 이 옵션 값이 0보다 크면 -aspect 옵션은 무시되고 -width 옵션이 줄 길이를 결정합니다. 값이 0 이하이면 -aspect 옵션이 줄 길이를 결정해요.
위젯 명령
message 명령은 이름이 pathName인 새 Tcl 명령을 만듭니다. 일반적인 형태는 다음과 같아요.
pathName option ?arg arg ...?
pathName cget option — option으로 주어진 설정 옵션의 현재 값을 돌려줍니다.
pathName configure ?option? ?value option value ...? — 위젯의 설정 옵션을 조회하거나 수정합니다. option을 지정하지 않으면 사용 가능한 모든 옵션을 설명하는 리스트를 돌려줘요. option만 지정하면 그 옵션 하나를 설명하는 리스트를 돌려줍니다. option-value 쌍을 지정하면 해당 옵션을 수정하고 빈 문자열을 돌려줘요.
기본 바인딩
새 message를 만들면 기본 이벤트 바인딩은 없어요. message는 출력 전용을 목적으로 하기 때문이에요.
알려진 버그
탭은 중앙 정렬되거나 오른쪽 정렬된 텍스트에서 잘 작동하지 않아요. 가장 흔한 결과는 줄이 잘못 정렬되는 것입니다.
더 알아보기
- label — 텍스트·이미지 표시 위젯