본문으로 바로가기

spinbox

spinbox .spia -from 1 -to 10 -textvariable v
pack .spia
.spia configure -state readonly
set v

spinbox 위젯은, Tk 8.4 버전부터 추가된 3개의 위젯 중에서도, 전부터 존재했었기 때문에 일반적이라 볼 수 있습니다. scale과 마찬가지로 연속적인 값 중에서 한 개의 값을 선택하는 위젯입니다. 선택할 수 있는 값의 범위는 -from과 -to로 지정합니다. -state옵션은 normal, readonly, disabled 3개가 있고, 기본은 normal입니다. normal의 경우는 우측의 화살표를 클릭하여 값을 증가시킬수 있는 것 외에도, 텍스트 부분을 직접 편집하여 값을 변경할 수 있습니다. readonly는 우측의 화살표 부분을 클릭하여 값을 증가 시킬수 있으며, 텍스트 편집은 불가능합니다. disabled는 양측 모두 편집이나 증가 모두 불가능 상태가 됩니다.

labelframe

set fa [labelframe .fa -bd 2 -rel groove -text "타이틀" -labelanchor ne]
label $fa.lab1 -text "선택하여 주십시오."
button $fa.b1 -text "버튼 1"
button $fa.b2 -text "버튼 2"
button $fa.b3 -text "버튼 3"
foreach e {lab1 b1 b2 b3} {
    pack $fa.$e -side top -padx 2 -pady 2 -anc w
}
pack $fa

label과 frame의 조합에 많은 분들이 목말라 했을겁니다. 다른 GUI 툴킷에서는 훌륭한 메이저 위젯으로, Tk에서도 사용할 수 있게 됐으며, frame의 선 일부에 label을 표시할 수 있습니다. 텍스트는 -text 옵션으로 지정할수 있고, -labelwidget 옵션으로는 임의의 위젯을 지정할 수 있습니다. -borderwidth와 -relief등 frame위젯에서 사용하던 옵션의 대부분을 사용할 수 있습니다. 독특한 옵션 -labelanchor는, frame위의 label 위치를 동남서북 eswn의 기호로 나타내고, 최대 2개의 조합으로 사용할수 있습니다. 기본은 nw(북서: 왼쪽 위)입니다.

panedwindow

set pa [panedwindow .pa -orient horizontal]
set f1 [frame .f1 -bd 3 -rel groove]
listbox $f1.lsta
$f1.lsta insert end "Item A"
$f1.lsta insert end "Item B"
$f1.lsta insert end "Item C"
pack $f1.lsta

set f2 [frame .f2 -bd 3 -rel groove]
message $f2.msga -text { 테스트 중 입니다.} -width 150
pack $f2.msga

$pa add $f1; $pa add $f2
pack $pa

panedwindow는 윈도우를 여러 개의 창 틀로 나눈 frame입니다. frame과의 차이는, pane의 경계선으로 된 틀을 마우스로 각 pane의 폭을 좁히거나 넓히거나 하는 일을 할 수 있습니다. -orient 옵션으로 경계선의 방향을 결정짓는데, horizontal, vertical로 결정지을 수 있습니다. 위젯을 생성하면 add 커맨드로 위젯을 panedwindow에 왼쪽 순으로 추가할 수 있습니다. forget 커맨드로 삭제하는 것도 가능합니다.

-compound 옵션

image create photo Image1 -file ok.gif
button .b -text "확인" -image Image1 \
    -compound right -font {Helvetica 10 normal}
pack .b -ipadx 5

 button, label, menuitem의 각 위젯에 -compound 옵션이 추가됐습니다. 이 옵션은 이러한 위젯에 -text 옵션으로 지정된 레이블 문자열이나, -image 옵션으로 지정된 이미지 출력이나, 어느 한쪽밖에 표시할 수 없었던 문제를 해결하고 있습니다. 레이블과 이미지를 동시에 표시하고 싶은 위젯에 -text, -image 옵션을 사용합니다. 그리고 -compound 옵션으로 표시방법을 지정하며, none, top, bottom, left, right, center 중에서 선택합니다. 기본값은 none이며, -text나 -image 양쪽이 지정되면, 이미지만 출력됩니다. top 이후의 다섯 개는 문자열로부터 이미지를 어디에 출력할 것인가를 지정하는 의미입니다.