2009-08-02 4 views
8

(이 질문에 파이썬으로 태그를 붙였습니다. 파이썬 코드도 이해할 수 있기 때문에 파이썬의 예제도 환영합니다!).erlang : 패널에서 wxNotebook을 확장하려면 어떻게해야합니까?

내가 wxWidgets에있는 간단한 창을 만들려면 :
은 내가 (수평, 두에 분할) 메인 패널에 팔렛에서 BoxSizer 연결 I 양식
에 추가 메인 패널을 만들 수 있습니다.
나는
내가
내가 (수직) 새로운 팔렛에서 BoxSizer를 작성, 팔렛에서 BoxSizer에 RightPanel를 추가, 팔렛에서 BoxSizer에 LeftPanel를 추가
나는 패널을 만들
나는 노트북 위젯을 만들
(수평) 다른 팔렛에서 BoxSizer를 만들 그리고 내가 RightPanel
,369에 수평 선별기를 연결
내가 수평 한
에 수직 선별기를 추가 (수직 일)
내가 새로운 팔렛에서 BoxSizer 노트북을 추가 할 노트북 (의 addPage) 안에 넣어왼쪽 및 오른쪽 패널을 주 사이 저에 추가합니다.

이 작동하지 않습니다 ...

어쩌면 내가 놓친 무언가 (정신 선별기에 대한 블록)하지만 제가 같이 할 것입니다 것은 수직 선별기를 사용하지 않고 노트북 위젯을 확장하는 것입니다 수평 한 안쪽에 (어쨌든 작동하지 않습니다).

내 질문은. RightPanel 내부의 노트 위젯을 확장하여 폼의 오른쪽 영역을 차지하고 싶다고 가정하면 어떻게해야할까요? 얼랑을 이해하는 사람들을 위해

는, 이것은 내가 지금까지 무엇을 가지고 :

mainwindow() -> 
    %% Create new environment 
    X = wx:new(), 

    %% Create the main frame 
    MainFrame = wxFrame:new(X, -1, "Test"), 
    MainPanel = wxPanel:new(MainFrame, [{winid, ?wxID_ANY}]), 
    MainSizer = wxBoxSizer:new(?wxHORIZONTAL), 
    wxWindow:setSizer(MainPanel, MainSizer), 

    %% Left Panel... 
    LeftPanel = wxPanel:new(MainPanel, [{winid, ?wxID_ANY}]), 
    LeftPanelSizer = wxBoxSizer:new(?wxVERTICAL), 
    wxWindow:setSizer(LeftPanel, LeftPanelSizer), 
    wxWindow:setMinSize(LeftPanel, {152, -1}), 

    %% Right Panel 
    RightPanel = wxPanel:new(MainPanel, [{winid, ?wxID_ANY}]), 
    RightPanelVerticalSizer = wxBoxSizer:new(?wxVERTICAL), 
    RightPanelHorizontalSizer = wxBoxSizer:new(?wxHORIZONTAL), 
    wxWindow:setBackgroundColour(RightPanel, {255,0,0}), 

    Notebook = wxNotebook:new(RightPanel, ?wxID_ANY, [{size,{-1,-1}}]), 
    TestPanel1 = wxPanel:new(Notebook, [{size,{-1,-1}},{winid, ?wxID_ANY}]), 
    wxNotebook:addPage(Notebook, TestPanel1, "Testpanel!"), 
    TestPanel2 = wxPanel:new(Notebook, [{size,{-1,-1}},{winid, ?wxID_ANY}]), 
    wxNotebook:addPage(Notebook, TestPanel2, "Testpanel!"), 
    wxSizer:add(RightPanelVerticalSizer, Notebook, [{border,0},{proportion,1}, {flag,?wxEXPAND}]), 
    wxSizer:add(RightPanelHorizontalSizer, RightPanelVerticalSizer, [{proportion,1}, {flag,?wxEXPAND}]), 
    wxWindow:setSizer(RightPanel, RightPanelHorizontalSizer), 

    %% Main Sizer 
    wxSizer:add(MainSizer, LeftPanel, [{border, 2}, {flag,?wxEXPAND bor ?wxALL}]), 
    wxSizer:add(MainSizer, RightPanel, [{border, 2}, {flag,?wxEXPAND bor ?wxTOP bor ?wxRIGHT bor ?wxBOTTOM}]), 

    %% Connect to events 
    wxFrame:connect(MainFrame, close_window), 
    wxWindow:center(MainFrame), 
    wxWindow:show(MainFrame), 
    ... 

답변

4

내가 (최대한 빨리 할 수있는) 내가 할 필요가 무엇인지 알아 낸 후이 질문을 폐쇄하고있다.

%% Main Sizer 
    wxSizer:add(MainSizer, LeftPanel, [{proportion,0},{border, 2}, {flag,?wxEXPAND bor ?wxALL}]), 
    wxSizer:add(MainSizer, RightPanel, [{proportion,1},{border, 2}, {flag,?wxEXPAND bor ?wxTOP bor ?wxRIGHT bor ?wxBOTTOM}]), 
:

는 기본적으로 나는 (이 모든 일을 확장됩니다)

새로운 코드 메인 패널에 추가 명령의 1로 비율을 변경

관련 문제