상자 포장은 입니다. 실제로는입니다. 따라서 이해하기가 쉽지 않을 수 있습니다.
레이아웃은 세로 (벽돌 더미처럼) 또는 가로 (사람 큐처럼)입니다. 해당 레이아웃의 각 요소가 확장되거나 확장 될 수 없습니다.
수평 (HBox의)
[widget][widget][widget][widget]
수직 (중 VBOX)
[widget]
[widget]
[widget]
[widget]
그래서 예를 들어, 수평 레이아웃 두 개의 버튼 (HBox의)는 코드가 될 것이다 :
import gtk
box = gtk.HBox()
b1 = gtk.Button('button1')
b2 = gtk.Button('button2')
box.pack_start(b1)
box.pack_start(b2)
패킹의 기본값은 expand=True
이므로 두 버튼 모두 상자가 열리면 영역의 절반을 차지하게됩니다. 용기의 크기가 어떻든간에. 나는 이것을 "stretchy"라고 생각합니다.
확장 위젯 : 당신이 확장하지 않도록 버튼 중 하나를 원하는 경우
[[ widget ][ widget ]]
그래서, 당신은 이런 식으로 포장됩니다
box.pack_start(b1, expand=False)
비 확장 위젯 :
[[widget][ widget ]]
그러면 버튼은 그려야 할 공간을 차지합니다 : 텍스트 + 테두리 + 그림자 + 이미지 (있는 경우) e 나머지 버튼을 채우기 위해 다른 버튼이 펼쳐집니다. 일반적으로 버튼을 확장 할 필요가 없으므로 실제 상황은 창을 채우기 위해 확장하려는 TextArea입니다.
pack_start
에 전달할 수있는 다른 매개 변수는 채우기 매개 변수이며 일반적으로 무시할 수 있습니다. expand=False
이면 fill
매개 변수는 완전히 무시됩니다 (해당 상황에서 의미가 없으므로).
다른 언급은 set_size_request
입니다. 나는 이것이 일반적으로 좋지 않다고 말한다. 나는 당신이 그것을 사용해야 할 상황이 있기 때문에 일반적으로 말합니다. 그러나 GTK + 사용자 인터페이스를 포장하는 것으로 시작하는 사람은 사용하지 않을 것을 강력히 권합니다. 일반적으로 상자 및 기타 컨테이너가 레이아웃을 처리하도록합니다. set_size_request
은 기대했던 것과 정확히 일치하지 않습니다. 그것은 위젯의 크기를 변경하지 않고 요청할 공간의 양만 변경합니다. 더 많은 것을 사용할 수도 있고 더 큰 공간을 채우기 위해 늘릴 수도 있습니다. 그것은 거의 요청보다 작지는 않을 것이지만, 단지 "요청"이기 때문에 요구가 충족 될 것이라는 보장이 없다.
언어 별 GTK + 문서의 내용을 이해하는 데 문제가있는 사람은 [developer.gnome.org] (https://developer.gnome.org)에서 각 기능을 완전히 설명하는 기본 C 문서를 사용하는 것이 좋습니다. – oldtechaa