Windows XP에서 격자가있는 최상위 창은 사용자가 숫자의 배수에서 크기를 조정하지 못하도록 제한하지 않습니다. X에서는 작동하지만 Windows에서는 작동하지 않습니다. 어떤 픽셀 크기로도 크기를 조정할 수 있습니다.Windows의 눈금이있는 지오메트리는 크기 조정을 제한하지 않습니다.
Windows Windows 관리자가 지원하지 않습니까? 수동으로, 어쩌면 최상위의 크기 조정 이벤트에 일부 명령을 바인딩하여 할 수 있습니까?
Windows XP에서 격자가있는 최상위 창은 사용자가 숫자의 배수에서 크기를 조정하지 못하도록 제한하지 않습니다. X에서는 작동하지만 Windows에서는 작동하지 않습니다. 어떤 픽셀 크기로도 크기를 조정할 수 있습니다.Windows의 눈금이있는 지오메트리는 크기 조정을 제한하지 않습니다.
Windows Windows 관리자가 지원하지 않습니까? 수동으로, 어쩌면 최상위의 크기 조정 이벤트에 일부 명령을 바인딩하여 할 수 있습니까?
Windows에서 실제로 작동하지 않는 것은 맞습니다 (Mac OS X/Aqua에서도 마찬가지입니다). 이는 창 관리자가이 기능을 지원하지 않기 때문입니다. 당신은 몇 가지 스크립트로 그것을 합성해야합니다. 그러나 일반적인 복잡한 격자는 하나의 격자 창 이상의 것입니다. 업데이트 된 크기를 다음 그리드 크기로 바꿀 수있는 여분의 공간이 있습니다. 그러면 윈도우가 약간 확장되고 다시 크기가 조정됩니다 ... 그리고 계속해서 ...
따라서 2 단계 초기화가 필요합니다. 우선 우리가 허용해야하는 여분의 공간의 실제 크기를 측정 한 다음 시행 코드를 적용해야합니다.
package require Tk
proc initGrid {window w h} {
# Do nothing for subwindows
if {$window ne [winfo toplevel $window]} return
lassign [wm grid $window] xcount ycount xstep ystep
set wExtra [expr {$w - $xcount*$xstep}]
set hExtra [expr {$h - $ycount*$ystep}]
bind $window <Configure> [list resizeGrid $wExtra $hExtra %W %w %h]
}
proc resizeGrid {wExtra hExtra window w h} {
# Do nothing for subwindows
if {$window ne [winfo toplevel $window]} return
lassign [wm grid $window] xcount ycount xstep ystep
if {$w-$wExtra != $xcount*$xstep || $h-$hExtra != $ycount*$ystep} {
set w [expr {($w - $wExtra)/$xstep}]
set h [expr {($h - $hExtra)/$ystep}]
wm grid $window $w $h $xstep $ystep
}
}
pack [text .t -setgrid 1] -fill both -expand 1
bind . <Configure> {initGrid %W %w %h}
자세히 알 수 있듯이이 작업은 특히 간단하지 않습니다.
건강 경고 : Windows에서는이 방법을 사용하지 않았지만 OSX에서는 나에게 잘 돌아 간다. 그래서 당신에게 도움이 될만한 합당한 기회가있다. –
크기 조정 중에는 작동하지만 깜박이다. 창의 크기를 조절할 수 없게하고 크기 조정을위한 4 버튼 위젯을 만드는 것이 더 안정적 일 것입니다. 아니면 2 개의 텍스트 필드, 또는 ... 어쨌든, 내가 뭔가를 놓치거나 잘못한 것을 알았으니, 내 [레벨 편집자] (http://troligen.se/wooden2.jpg)와 계속할 수 있습니다. 감사. – potrzebie
많은 심오한 건축 작업없이 깜박임에 대해 많은 것을 할 수 있다고 생각하지 않습니다. ''이벤트는 크기 정보를 적시에받는 방법입니다. (나는 실제로'-setgrid'를 전혀 사용하지 않고 여러분이 얻은 것을 다루는 것을 권고합니다.) –