You are here

Tk의 태그(tag)

admin의 아바타
첨부 파일파일 크기
Image icon tag.png6.76 KB
Image icon tag1.png5.2 KB
Image icon tag2.png5.25 KB

텍스트 위젯과 캔바스 위젯은, 위젯안에 텍스트나 도형등에 태그 이름을 붙일수 있습니다. 태그 이름을 사용하여, 위젯안에 배치 시켰던 문자나 도형등에 대해 바인드(bind)를 할 수 있습니다.

아래의 예는, 텍스트 위젯안의 Java, Tcl, C의 키워드에 대하여 태그를 붙이고, 그 키워드의 색을 변경하는 바인드를 하고 있습니다.

pack [text .t  -width 30 -height 7 -bg white]
.t insert end {
Java 기술 산·연 협력 지원 사업에 관한 연구,
C 언어 통합 플랫폼, 함수 구조,
배열과 문자열, 입출력 함수 수록. Tcl의 장점에 대한 나열...
}
 
set pos 1.0
while {1} {
        catch {.t search -count length -regexp "Java|Tcl|C" $pos end} pos
        if {$pos == ""} {
                break
        }
        .t tag add foo $pos "$pos + $length char"
        set pos [.t index "$pos + $length char"]
}
 
.t tag configure foo -background blue -foreground white
 
.t tag bind foo <Enter> {
        %W tag configure foo -background red
}
 
.t tag bind foo <Leave> {
        %W tag configure foo -background blue
}

다음의 예는, 캔바스 위젯안의 도형에 대하여 태그를 붙이고, 그 도형 윤곽의 색을 변경하는 바인드를 하고 있습니다.

pack [canvas .c -height 70 -width 70 -bg white]
.c create oval 10 10 40 40 -fill red -width 4 -tag foo
.c create oval 30 10 60 40 -fill green -width 4 -tag foo
.c create oval 20 30 50 60 -fill blue -width 4 -tag foo
 
.c bind foo <Enter> {
        %W itemconfigure foo -outline gold
}
 
.c bind foo <Leave> {
        %W itemconfigure foo -outline black
}  

태그의 이름을 붙일 때 주의 할 점은, 캔바스 위젯의 all 이라는 태그 이름은 모든 태그를 가르키기 위해 예약된 태그 이름으로 사용이 불가능합니다. 단 텍스트 위젯 에서는 예약 되어 있지 않으므로 사용가능합니다.

카테고리: