(Oznaczyłem to pytanie również jako Python, ponieważ rozumiem kod Pythona, więc również przykłady w Pythonie są mile widziane!).W erlang: Jak mogę rozwinąć wxNotebook w panelu?
Chcę utworzyć prostą okna w wxWidgets:
utworzyć główny panel, który dodaję do postaci
I skojarzyć boxsizer do głównego panelu (dzielenie go na dwie części, w poziomie).
dodam LeftPanel do boxsizer,
dodam RightPanel do boxsizer,
tworzę nową boxsizer (pionowy)
tworzę kolejny boxsizer (poziomo)
utworzyć widget Notebook
tworzę Panelu i umieścić go wewnątrz notebooka (addPage)
dodam notebooka do nowego boxsizer (jeden pionowy)
dodam pionową sizer w poziomym jednym
kojarzy mi poziomą sizer do RightPanel
Dodaję lewy i prawy panel do głównego sizera.
to nie działa ...
Może ja coś przeoczyć (psychiczny blok o klasyfikatory), ale co bym jak do zrobienia jest, aby rozwinąć widget notebooka bez użycia pionowej klasyfikatorze wewnątrz poziomego (i tak nie działa).
Moje pytanie brzmi. Zakładając, że chcę rozwinąć widżet Notatnika wewnątrz prawego panelu, aby zająć resztę prawego obszaru formularza, jak miałbym to zrobić?
Dla tych, którzy rozumieją Erlang, jest to, co mam do tej pory:
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),
...