저는 Tcl/Tk에 비교적 익숙하지만 지난 몇 주 동안 논스톱으로 성공적으로 작업 해 왔습니다. 대부분의 경우 그것은 매우 간단합니다. 그러나, 나는 아마 단순한 아마 걸림돌을 쳤다. 그러나 나는 그것을 이해하는 것처럼 보일 수 없다.Tcl/Tk : 크기를 조정할 때 프레임이 잘못 작동합니다.
문제를 설명하는 몇 줄에 상당히 복잡한 코드가 줄었습니다.
간단한 예제에서는 각각에 간단한 레이블 위젯이있는 2 개의 labelframes를 생성합니다. 메인 윈도우의 크기를 조정 (즉, 확장) 할 때 "왼쪽"프레임의 크기를 y 방향으로 만 변경하고 "중간"프레임의 크기를 x 및 y로 조정합니다. 그 부분은 잘 작동합니다.
그러나 크기를 조정할 때 프레임이 서로 붙어 있기를 원합니다. 즉, 둘 다 크기가 조정될 때 "중간"프레임이 "왼쪽"프레임에 달라 붙어 있어야합니다. 대신, 저는 두 사람 사이에 틈이 생기는 것을 봅니다.
다시 말하지만, 이것은 더 복잡한 프로그램의 간단한 코드 비트입니다. 동일한 프로그램에서 그리드와 팩 명령을 혼합하지 않으려 고 노력하고 있으며 원래의 더 복잡한 프로그램에서는 그리드를 사용하는 것이 매우 다루기 힘들게되었습니다. 따라서 "팩"을 사용하는 솔루션이 선호됩니다. 그러나 적절한 설명은 좋은 시작일 것입니다.
내 작은 예 :
#!/usr/bin/wish
## Set up two main frames
set frameLeft [labelframe .frameLeft]
set frameMiddle [labelframe .frameMiddle]
pack $frameLeft -fill y -expand 1
pack $frameMiddle -fill both -expand 1
pack $frameLeft $frameMiddle -side left -anchor nw
## Instead of the previous 3 lines, I also tried:
#pack $frameLeft -fill y -expand 1 -side left -anchor nw
#pack $frameMiddle -fill both -expand 1 -side left -anchor nw
## Set up component in LEFT frame
set frameOne [labelframe $frameLeft.frameOne]
set labelOne [label $frameOne.labelOne -text "Label One:"]
pack $labelOne -anchor nw
pack $frameOne -anchor nw
## Set up component in MIDDLE frame
set frameTwo [labelframe $frameMiddle.frameTwo]
set labelTwo [label $frameTwo.labelTwo -text "Label Two:"]
pack $labelTwo -side left
pack $frameTwo -anchor nw
방이 충분하지 않을 때 물건을 다루는 알고리즘이 있지만, 항상 저를 혼란스럽게합니다. 복잡한 레이아웃을 수행하는 데 더 복잡하지만 사용하기 쉬운'grid'를 선호합니다. (또한 왜'-text' 레이블없이'labelframe' 위젯을 사용하고 있습니까?) –
고마워! 나는 내가 어디로 잘못 갔는지 안다. 다시 말하면, 나의 예는 복잡한 문제의 단순화이다. 그래서 나의 실제 문제는 당신의 설명으로는 어쩔 수 없지만, 나는 그것을 알아낼 수 있었다. 내가 말했듯이, 나는 아직도 약간 새로운데, 분명히 나는 내가 가지고있는 줄 알았던 안락한 수준에 이르지 못했다. – user1074069
@ user1074069 나는 단지 몇 가지 문제가 '그리드'(교활한 트릭이 있음)로 더 잘 해결되고 실제 사용자 인터페이스를 사용자에게 충분히 단순하게 유지하려고 시도하면서 실험을 권할뿐입니다. –