2017-03-09 1 views
0

내 창 크기를 조정할 때 왜 내 창을 이동할 때 왜 이해가 안되는가 . 내 창을 따르지 않고 .c bind cir <1> [list window %x %y]으로 만든 다른 창 . 나는 내가 ' 옵션으로 <Configure>을 사용했습니다,하지만 난TCL TK 창 크기 조정 :

내 코드 아래에 도움을

감사를 수행하는 방법을 알고하지 않습니다

proc window {crx cry} { 

set w1 .win 
catch {destroy $w1} 
toplevel $w1 

wm minsize $w1 300 100 
wm maxsize $w1 300 100 

label $w1.l -text "$crx $cry" 

pack $w1.l 

} 

wm state . zoomed 

canvas .c -bg ivory 

.c create oval 2 1.5 25 25 -fill #33FF00 -tag cir 
.c create oval 30 30 50 50 -fill #33FF00 -tag cir1 
.c create oval 60 60 90 90 -fill #33FF00 -tag cir2 
.c create oval 90 90 130 130 -fill #33FF00 -tag cir3 

pack .c -fill both -expand 1 

.c bind cir <1> [list window %x %y] 
.c bind cir1 <1> [list window %x %y] 
.c bind cir2 <1> [list window %x %y] 
.c bind cir3 <1> [list window %x %y] 

답변

1

는 일반적으로, 그것은 어를 만들기 위해 나쁜 GUI 디자인이다 Windows의 그룹은 하나로 이동합니다. 그것은 사용자를 혼란스럽게합니다. 상기 ...

<Configure> 이벤트는 대부분 요즘 부모 및 크기에 그 위치 상대가 변경되는 것을 의미가 "재구성"때마다 위젯으로 전송됩니다. 기본 bind 명령을 사용해야하며, 최상위 디렉토리에 bind 인 경우 최상위 레벨이 기본적으로 최상위가 아닌 하위 항목에 의해 생성 된 이벤트도 수신한다는 점을 기억해야합니다. 일반적으로 필터링이 필요합니다. 당신은 당신이 원하는 필터링 된 이벤트가 있으면

bind . <Configure> { 
    if {"%W" eq [winfo toplevel %W]} { 
     puts "reconfigured %W: (%x,%y) %wx%h" 
    } 
} 

, 업데이트 된 형상을 계산하고 wm geometry으로 적용 할 수 있습니다.

+0

응답에 @DonalFellows에게 감사드립니다. – Mkn