grid 및 pack 명령에 대한 설명서를 읽어야합니다. pack
와
의
-fill
및
-expand
옵션을 사용하여 위젯 크기 조정에 반응하는 방식을 조정하는 데 도움이됩니다.
예 :
pack .widget -fill both -expand true
pack .widget -fill x -expand true -anchor s
grid
으로
는 -sticky
옵션 columnconfigure
및 rowconfigure
하위 명령은 당신에게 도움이 될 것입니다.
예 : 어떤 경우에는
grid .widget -sticky ew
grid columnconfigure . 0 -weight 1
는 크기 조정에 응시해야합니다 특별한 조치가있을 수 있습니다. 이 경우 bind 명령이 유용합니다. <Configure>
이벤트에 바인딩하고 위젯 크기를 조정하거나 필요에 따라 다른 작업을 수행 할 수 있습니다.
편집 : grid columnconfigure
가 포함 된 프레임의 열에 적용
. 따라서 각 위젯에 대해 실행할 필요가 없습니다. 위의 예에서는 .
프레임에 .widget
이 포함되어 있고 .
프레임의 열이 구성되어 있습니다. 이 예제는 bind
도 .
로 .
의 모든 자식에 적용
# in this example, the entry fields will adjust their width when
# the window is resized.
package require Tk
grid columnconfigure . 1 -weight 1
foreach {val} {1 2 3 4 5 6 7} {
ttk::label .lab$val -text "Label $val:"
ttk::entry .entry$val -textvariable mydata($val)
grid .lab$val .entry$val -in . -sticky w
# change the configuration for .entry$val only...
grid configure .entry$val -sticky ew
}
proc doresize { win } {
puts "Win $win now has width: [winfo width $win]"
}
bind . <Configure> [list ::doresize %W]
주 톱 레벨 윈도우입니다. 당신이 .
변경에만 관심이 있다면, 당신은 크기 조정 절차를 변경할 수 있습니다 다음 bind
최상위 윈도우가 아닌 프레임 또는 위젯에 적용하면
proc doresize { win } {
if { $win eq "." } {
puts "Win $win now has width: [winfo width $win]"
}
}
을, 이벤트는 해당 수신된다 프레임 또는 위젯.
모두 이벤트가 전송됩니다.또한 변화 폭에 대한 변경 사항을 확인 할 수 있습니다
set vars(last.width) 0
proc doresize { win } {
variable vars
if { $win eq "." } {
set newwidth [winfo width $win]
if { $newwidth != $vars(last.width) } {
puts "Win $win now has width: [winfo width $win]"
if { $vars(last.width) != 0 } {
# this is not the first time, as last.width is not zero
# do something due to window resize.
}
set vars(last.width) $newwidth
}
}
}
참고 : grid, pack, bind
안녕 감사합니다! 위젯은 동적으로 구성되므로 위젯 각각에 대해 각 루프마다 구성 단계를 수행 할 수 있습니까? 또한 위젯에 크기 조정을 바인딩 할 수있는 방법을 보여줄 수 있습니까? 엄청 고마워! – UBan
당신은'-sticky'와'columnconfigure'가 어떻게 작동 하는지를 배우기 위해 이것과 같은 간단한 예제를 가지고 다양한 옵션을 가지고 놀 수 있습니다. 또한'pack'을 사용하여 예제를 다시 작성하십시오. 'pack'과'grid'는 그들 만의 강점과 약점이 있습니다. 어떤 사람들은 하나를 좋아하고 어떤 사람들은 다른 사람을 좋아하고 어떤 사람들은 두 사람을 사용합니다. –
고마워요! 그것은 작동합니다. – UBan