2009-08-02 15 views
8

(Python kodlarını anladığımdan beri bu soruyu Python olarak etiketledim, böylece Python'daki örnekler de hoş geldiniz!).Erlang'da: wxNotebook'u bir panelde nasıl genişletirim?

Ben WxWidgets basit bir pencere oluşturmak istiyorum:
Ben (yatay, ikiye bölme) ana panele bir boxsizer ilişkilendirmek ben bir forma
eklemek ana paneli oluşturmak.
I
I
I (dikey) yeni boxsizer oluşturmak boxsizer için RightPanel ekleyin boxsizer için LeftPanel eklemek
I bir panelini yaratmak
bir dizüstü aracı oluşturmak
(yatay) bir boxsizer oluşturmak ve ben RightPanel
yatay boyutlandıncısı ilişkilendirmek
Ben yatay bir
dikey boyutlandıncısı ekleyin (dikey bir)
yeni boxsizer için dizüstü eklemek Notebook (addPage) içine koyduSol ve Sağ paneli ana boyutlayıcıya ekliyorum.

Bu işe yaramazsa ...

Belki kaçırmış bir şey (zihinsel sizers hakkında bloğu) ama ne gibi yapmak istiyorum dikey sizer kullanılmadan dizüstü widget'ı genişletmektir yatay olanın içinde (zaten işe yaramıyor).

Benim sorum şu ki. Formun sağ tarafındaki alanın geri kalanını almak için Defter widget'ını RightPanel içinde genişletmek istediğimi farz edersem, bunu nasıl yapacağım? Erlang anlayanlar için

, Bu defa ne var:

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), 
    ... 

cevap

4

I (en kısa sürede ben gibi) Yapmam gerekeni anladım sonra bu soruyu kapatıyorum.

%% 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}]), 
:

Temelde ben (Bütün bunları genişleyecektir)

Yeni kod ana panele eklenti komutu 1'e oranını değiştirdi

İlgili konular