2010-06-28 4 views
1

나는 사용자가 메뉴에서 항목을 선택하여 화면에 보이는 것을 바꿀 수있는 wxPython 응용 프로그램을 가지고 있습니다. 종종 패널 레이아웃을 다시 계산해야합니다. 나는 패널의 모든 아이들 (그리고 그 아이들의 아이들)의 레이아웃을 역순으로 호출 할 수 있기를 바란다. 즉, 자식이없는 항목에는 먼저 Layout() 함수가 먼저 호출 된 다음 부모가 호출됩니다.wxPanel의 모든 자식을 레이아웃하는 방법은 무엇입니까?

그렇지 않으면 코드의 패널에 대한 모든 지식을 보유해야합니다. (즉,이 패널의 변경으로 인해 얼마나 많은 부모가 영향을 받게 될지).

답변

0

더 (레이아웃 코드가 :)을 위해 나머지를 할 수 있도록 할 수있는 Jon이 완벽하게 대답했습니다.)

에있는 모든 요소의 위치가 사용자가 선택하면 변경 될 수 있습니다. "가변 부분"만 업데이트하면 더 잘 보일 것입니다. 이를 수행하려면 각 추가 컨트롤 집합에 대한 패널을 만들 수 있습니다. 의 최소 크기는 각 패널 중에서 가장 큰 패널의 최소 크기 여야합니다. 사용자의 선택에 따라 원하는 패널을 숨기거나 표시 할 수 있습니다.

또는 wxChoicebook이 필요할 수도 있습니다.

+0

당신은 사용자의 관점을 가지고 있습니다. 내 앱이 실제로 자극을 줄 수있는 무언가를하도록 노력하고 있습니다. 가장 큰 '가변 부분'으로 설정된 최소 크기의 wxChoicebook을 사용하겠습니다. 감사! –

0

유동적 인 레이아웃 양식을 보려면 wxSizerssome examples을보십시오.

당신은 높이, poportions 등 등 지정한 다음

당신의 원래의 질문보다 존 케이지의 대답에 귀하의 코멘트에 응답
+0

이미 응용 프로그램의 모든 패널을 레이아웃하기 위해 sizer를 사용합니다. 하지만 선택 사항을 기반으로하는 경우 (즉, wxChoice 컨트롤에서) 사용자에게 다른 일련의 추가 컨트롤 집합이 표시됩니다. 한 세트의 컨트롤이 표시 될 때 패널에 약간의 공간이 필요하며 다른 세트가 표시 될 때 많은 양의 공간이 필요하므로 부모의 Layout() 함수를 호출해야합니다. 문제는 그 후에 부모가 자체 패널에서 너무 많은 공간을 차지할 수 있으므로 ITS 부모 호출 Layout()이 있어야합니다. –

관련 문제