label — 텍스트·이미지 표시용 라벨 위젯
label — 텍스트·이미지 표시용 라벨 위젯
화면에 어떤 문구나 이미지를 단순히 보여주고 싶을 때, 버튼처럼 상호작용이 필요한 건 아니잖아요. Tk의 label 명령은 텍스트 문자열, 비트맵, 이미지를 표시하는 비상호작용 위젯을 만듭니다.
본문
개요
label pathName ?options?
label 명령은 pathName 인자로 주어진 새 창을 만들고 label 위젯으로 만듭니다. 색, 글꼴, 텍스트, 초기 relief 같은 라벨의 측면을 구성하는 옵션을 명령줄이나 옵션 데이터베이스로 지정할 수 있어요. label 명령은 pathName 인자를 돌려줍니다. 이 명령을 호출할 때 pathName이라는 창이 존재해서는 안 되지만, pathName의 부모는 존재해야 해요.
label은 텍스트 문자열, 비트맵, 또는 이미지를 표시하는 위젯입니다. 텍스트를 표시할 때는 모두 한 가지 글꼴이어야 하지만, 화면에서 여러 줄을 차지할 수 있어요(새줄 문자가 있거나 -wraplength 옵션 때문에 줄바꿈이 일어나는 경우). 그리고 -underline 옵션으로 문자 하나에 선택적으로 밑줄을 그을 수 있어요. 아래 설명하는 명령으로 relief나 텍스트를 바꾸는 등 라벨을 몇 가지 간단한 방식으로 조작할 수 있습니다.
표준 옵션
-activebackground, -activeforeground, -anchor, -background 또는 -bg, -bitmap, -borderwidth 또는 -bd, -compound, -cursor, -disabledforeground, -font, -foreground 또는 -fg, -highlightbackground, -highlightcolor, -highlightthickness, -image, -justify, -padx, -pady, -relief, -takefocus, -text, -textvariable, -underline, -wraplength 옵션이 표준 옵션으로 제공됩니다.
위젯 전용 옵션
-height (데이터베이스 이름 height, 클래스 Height) — 라벨의 원하는 높이를 지정합니다. 라벨에 이미지나 비트맵이 표시 중이면 값은 화면 단위(Tk_GetPixels이 받아들이는 형태)이고, 텍스트라면 텍스트 줄 수로 나타냅니다. 이 옵션을 지정하지 않으면 라벨의 원하는 높이는 표시 중인 이미지·비트맵·텍스트의 크기로 계산됩니다.
-state (데이터베이스 이름 state, 클래스 State) — 라벨의 세 가지 상태 normal, active, disabled 중 하나를 지정합니다. normal 상태에서는 -foreground와 -background 옵션으로 표시되고, active 상태에서는 -activeforeground와 -activebackground 옵션으로 표시돼요. disabled 상태에서는 -disabledforeground와 -background 옵션이 표시 방식을 결정합니다.
-width (데이터베이스 이름 width, 클래스 Width) — 라벨의 원하는 너비를 지정합니다. 이미지나 비트맵이 표시 중이면 값은 화면 단위이고, 텍스트라면 문자 수입니다. 지정하지 않으면 표시 중인 내용의 크기로 계산돼요.
위젯 명령
label 명령은 이름이 pathName인 새 Tcl 명령을 만듭니다. 이 명령으로 위젯에 여러 작업을 호출할 수 있어요. 일반적인 형태는 다음과 같습니다.
pathName option ?arg arg ...?
label 위젯에서 사용 가능한 명령은 다음과 같아요.
pathName cget option — option으로 주어진 설정 옵션의 현재 값을 돌려줍니다.
pathName configure ?option? ?value option value ...? — 위젯의 설정 옵션을 조회하거나 수정합니다. option을 지정하지 않으면 pathName에 사용 가능한 모든 옵션을 설명하는 리스트를 돌려줘요(형식은 Tk_ConfigureInfo 참조). option만 지정하면 그 옵션 하나를 설명하는 리스트를 돌려줍니다. option-value 쌍을 지정하면 해당 옵션을 주어진 값으로 수정하고 빈 문자열을 돌려줘요.
바인딩
새 label을 만들면 기본 이벤트 바인딩은 없어요. label은 상호작용을 목적으로 하지 않기 때문이에요.
예제
# 위젯 만들기
label .t -text "This widget is at the top" -bg red
label .b -text "This widget is at the bottom" -bg green
label .l -text "Left\nHand\nSide"
label .r -text "Right\nHand\nSide"
text .mid
.mid insert end "This layout is like Java's BorderLayout"
# 배치하기
pack .t -side top -fill x
pack .b -side bottom -fill x
pack .l -side left -fill y
pack .r -side right -fill y
pack .mid -expand 1 -fill both
더 알아보기
- labelframe — 라벨이 붙은 프레임 컨테이너
- button — 클릭 가능한 버튼 위젯
- ttk::label — 테마 기반 라벨 위젯