labelframe — 라벨이 붙은 컨테이너 위젯
labelframe — 라벨이 붙은 컨테이너 위젯
프레임에 제목을 붙여서 화면에 구획을 나누고 싶을 때가 있어요. 예를 들어 선택 옵션들을 묶어서 테두리와 함께 그룹 이름을 보여주려면요. Tk의 labelframe 명령은 라벨을 표시할 수 있는 컨테이너 위젯을 만듭니다.
본문
개요
labelframe pathName ?options?
labelframe 명령은 pathName 인자로 주어진 새 창을 만들고 labelframe 위젯으로 만듭니다. 배경 색이나 relief 같은 labelframe의 측면을 구성하는 옵션을 명령줄이나 옵션 데이터베이스로 지정할 수 있어요. labelframe 명령은 새 창의 경로 이름을 돌려줍니다.
labelframe은 단순한 위젯입니다. 주요 용도는 복잡한 창 레이아웃에서 공간을 띄우거나 컨테이너 역할을 하는 것이에요. frame의 기능에 라벨을 표시하는 능력이 더해져 있습니다.
표준 옵션
-borderwidth 또는 -bd, -cursor, -font, -foreground 또는 -fg, -highlightbackground, -highlightcolor, -highlightthickness, -padx, -pady, -relief, -takefocus, -text 옵션이 표준 옵션으로 제공됩니다.
위젯 전용 옵션
-background (데이터베이스 이름 background, 클래스 Background) — 표준 -background 옵션과 같지만 값에 빈 문자열을 지정할 수도 있어요. 이 경우 위젯은 배경이나 테두리를 표시하지 않고, 배경과 테두리용으로 컬러맵에서 색을 소비하지 않습니다.
-class (데이터베이스 이름 class, 클래스 Class) — 창의 클래스를 지정합니다. 이 클래스는 창의 다른 옵션을 조회할 때 옵션 데이터베이스에 사용되고, 나중에 바인딩 같은 다른 목적으로도 사용돼요. -class 옵션은 configure 위젯 명령으로 바꿀 수 없습니다.
-colormap (데이터베이스 이름 colormap, 클래스 Colormap) — 창에 사용할 컬러맵을 지정합니다. 값은 new일 수 있는데, 이 경우 창과 자식들을 위한 새 컬러맵이 만들어져요. 또는 같은 화면에 있고 pathName과 같은 visual을 가진 다른 창의 이름을 줄 수도 있습니다. 지정하지 않으면 새 창은 부모와 같은 컬러맵을 사용해요. configure로 바꿀 수 없습니다.
-height (데이터베이스 이름 height, 클래스 Height) — 원하는 창 높이를 Tk_GetPixels이 받아들이는 형태 중 하나로 지정합니다. 값이 0 이하이면 창은 아무 크기도 요청하지 않아요.
-labelanchor (데이터베이스 이름 labelAnchor, 클래스 LabelAnchor) — 라벨을 어디에 둘지 지정합니다. -text 옵션이 빈 문자열이 아닐 때만 라벨이 표시돼요. 유효한 값은 시계 방향으로 nw, n, ne, en, e, es, se, s, sw, ws, w, wn입니다. 기본값은 nw예요.
-labelwidget (데이터베이스 이름 labelWidget, 클래스 LabelWidget) — 라벨로 사용할 위젯을 지정합니다. 이 옵션이 -text 옵션을 덮어써요. 위젯은 -labelwidget으로 사용되기 전에 존재해야 하고, 이 창의 자손이 아니라면 쌓임 순서에서 이 위젯 위로 올려집니다.
-visual (데이터베이스 이름 visual, 클래스 Visual) — 새 창의 visual 정보를 Tk_GetVisual이 받아들이는 형태 중 하나로 지정합니다. 지정하지 않으면 부모와 같은 visual을 사용해요. configure 위젯 명령으로 바꿀 수 없습니다.
-width (데이터베이스 이름 width, 클래스 Width) — 원하는 창 너비를 Tk_GetPixels이 받아들이는 형태 중 하나로 지정합니다. 값이 0 이하이면 창은 아무 크기도 요청하지 않아요.
위젯 명령
labelframe 명령은 labelframe 창의 경로 이름과 같은 이름의 새 Tcl 명령을 만듭니다. 일반적인 형태는 다음과 같아요.
pathName option ?arg arg ...?
pathName cget option — option으로 주어진 설정 옵션의 현재 값을 돌려줍니다.
pathName configure ?option? ?value option value ...? — 위젯의 설정 옵션을 조회하거나 수정합니다. option을 지정하지 않으면 사용 가능한 모든 옵션을 설명하는 리스트를 돌려줘요(형식은 Tk_ConfigureInfo 참조). option만 지정하면 그 옵션 하나를 설명하는 리스트를 돌려줍니다. option-value 쌍을 지정하면 해당 옵션을 수정하고 빈 문자열을 돌려줘요.
바인딩
새 labelframe을 만들면 기본 이벤트 바인딩은 없어요. labelframe은 상호작용을 목적으로 하지 않기 때문이에요.
예제
햄버거 가게 GUI의 일부를 만드는 방법입니다. labelframe 위젯을 사용해 선택 항목들을 종류별로 묶어 정리했어요.
grid [labelframe .burger -text "Burger"] \
[labelframe .bun -text "Bun"] -sticky news
grid [labelframe .cheese -text "Cheese Option"] \
[labelframe .pickle -text "Pickle Option"] -sticky news
foreach {type name val} {
burger Beef beef
burger Lamb lamb
burger Vegetarian beans
bun Plain white
bun Sesame seeds
bun Wholemeal brown
cheese None none
cheese Cheddar cheddar
cheese Edam edam
cheese Brie brie
cheese Gruy\u00e8re gruyere
cheese "Monterey Jack" jack
pickle None none
pickle Gherkins gherkins
pickle Onions onion
pickle Chili chili
} {
set w [radiobutton .$type.$val -text $name -anchor w \
-variable $type -value $val]
pack $w -side top -fill x
}
set burger beef
set bun white
set cheese none
set pickle none
더 알아보기
- frame — 단순 컨테이너 위젯
- label — 텍스트·이미지 표시 위젯
- ttk::labelframe — 테마 기반 라벨 프레임