frame — 단순 컨테이너 위젯 만들고 다루기
frame — 단순 컨테이너 위젯 만들고 다루기
복잡한 화면을 배치할 때, 창을 분리해서 담아 두는 컨테이너가 있으면 편해요. Tk의 frame 명령은 그런 역할을 하는 단순한 컨테이너 위젯을 만듭니다. 배경 색과 입체 테두리 정도만 가진 가벼운 위젯이라 복잡한 레이아웃의 공간 분리용으로 많이 써요.
본문
개요
frame pathName ?options?
frame 명령은 pathName 인자로 주어진 새 창을 만들고 frame 위젯으로 만듭니다. 배경 색이나 relief 같은 프레임 속성은 아래 설명하는 옵션을 명령줄이나 옵션 데이터베이스에 지정해서 설정할 수 있어요. frame 명령은 새 창의 경로 이름을 돌려줍니다.
frame은 단순한 위젯이에요. 주요 용도는 복잡한 창 레이아웃에서 공간을 띄우거나 컨테이너 역할을 하는 것이죠. frame이 가진 기능은 배경 색과, 입력돼 보이거나 움푹 들어가 보이게 하는 선택적 3차원 테두리뿐입니다.
표준 옵션
-borderwidth 또는 -bd, -cursor, -highlightbackground, -highlightcolor, -highlightthickness, -padx, -pady, -relief, -takefocus 옵션은 표준 옵션으로 제공됩니다.
위젯 전용 옵션
-background (데이터베이스 이름 background, 클래스 Background) — 표준 -background 옵션과 같지만 값에 빈 문자열을 지정할 수도 있어요. 이 경우 위젯은 배경이나 테두리를 표시하지 않고, 배경과 테두리용으로 컬러맵에서 색을 소비하지 않습니다.
-class (데이터베이스 이름 class, 클래스 Class) — 창의 클래스를 지정합니다. 이 클래스는 창의 다른 옵션을 조회할 때 옵션 데이터베이스에 사용되고, 나중에 바인딩 같은 다른 목적으로도 사용돼요. -class 옵션은 configure 위젯 명령으로 바꿀 수 없습니다.
-colormap (데이터베이스 이름 colormap, 클래스 Colormap) — 창에 사용할 컬러맵을 지정합니다. 값은 new일 수 있는데, 이 경우 창과 그 자식들을 위한 새 컬러맵이 만들어져요. 또는 같은 화면에 있고 pathName과 같은 visual을 가진 다른 창의 이름을 줄 수도 있습니다. 그 경우 새 창은 지정한 창의 컬러맵을 사용해요. -colormap을 지정하지 않으면 새 창은 부모와 같은 컬러맵을 사용합니다. 이 옵션은 configure 위젯 명령으로 바꿀 수 없어요.
-container (데이터베이스 이름 container, 클래스 Container) — 값은 불리언이어야 해요. 참이면 이 창이 다른 응용이 임베드되는 컨테이너로 사용됨을 뜻합니다(예: Tk toplevel을 -use 옵션으로 임베드할 수 있어요). 창은 지오메트리 요청 같은 적절한 창 관리자 프로토콜을 지원하게 돼요. 이 응용에서 창이 자기 자식을 가져서는 안 됩니다. 이 옵션은 configure로 바꿀 수 없어요. 컨테이너는 테두리가 없으므로 컨테이너로 설정하면 -borderwidth, -padx, -pady는 무시됩니다.
-height (데이터베이스 이름 height, 클래스 Height) — 원하는 창 높이를 Tk_GetPixels이 받아들이는 형태 중 하나로 지정합니다. 값이 0 이하이면 창은 아무 크기도 요청하지 않아요. 이 값은 프레임의 전체 높이를 설정하며, -borderwidth 같은 것은 따로 더해지지 않습니다. 보통 grid나 pack 같은 전파형 지오메트리 매니저를 프레임 안에서 쓰면 매니저가 프레임 높이를 덮어쓰기 때문에 -height를 쓰지 않는 게 좋아요.
-visual (데이터베이스 이름 visual, 클래스 Visual) — 새 창의 visual 정보를 Tk_GetVisual이 받아들이는 형태 중 하나로 지정합니다. 지정하지 않으면 새 창은 부모와 같은 visual을 사용해요. -visual 옵션은 configure 위젯 명령으로 바꿀 수 없습니다.
-width (데이터베이스 이름 width, 클래스 Width) — 원하는 창 너비를 Tk_GetPixels이 받아들이는 형태 중 하나로 지정합니다. 값이 0 이하이면 창은 아무 크기도 요청하지 않아요. -height와 마찬가지로 프레임 전체 너비를 설정하며, 전파형 지오메트리 매니저를 쓰면 덮어써지므로 보통 쓰지 않는 게 좋아요.
위젯 명령
frame 명령은 프레임 창의 경로 이름과 같은 이름의 새 Tcl 명령을 만듭니다. 이 명령으로 위젯에 여러 작업을 호출할 수 있어요. 일반적인 형태는 다음과 같습니다.
pathName option ?arg arg ...?
frame 위젯에서 사용 가능한 명령은 다음과 같아요.
pathName cget option — option으로 주어진 설정 옵션의 현재 값을 돌려줍니다. option은 frame 명령이 받아들이는 값 중 하나일 수 있어요.
pathName configure ?option? ?value option value ...? — 위젯의 설정 옵션을 조회하거나 수정합니다. option을 지정하지 않으면 pathName에 사용 가능한 모든 옵션을 설명하는 리스트를 돌려줍니다(리스트 형식은 Tk_ConfigureInfo 참조). option만 지정하고 value가 없으면 그 옵션 하나를 설명하는 리스트를 돌려줘요. option-value 쌍을 하나 이상 지정하면 해당 위젯 옵션을 주어진 값으로 수정하고 빈 문자열을 돌려줍니다.
바인딩
새 frame을 만들면 기본 이벤트 바인딩은 없어요. frame은 상호작용을 목적으로 하지 않기 때문이에요.
더 알아보기
- labelframe — 라벨이 붙은 프레임 컨테이너
- toplevel — 최상위 창
- ttk::frame — 테마 기반 프레임 위젯