(Ho taggato questa domanda anche come Python poiché ho capito il codice Python, quindi sono benvenuti anche gli esempi in Python!).In erlang: Come faccio ad espandere wxNotebook in un pannello?
Voglio creare una semplice finestra in wxWidgets:
creo un pannello principale, che aggiungo ad una forma
associo un boxsizer al pannello principale (tagliandola in due tronconi, in orizzontale).
aggiungo LeftPanel al boxsizer,
aggiungo RightPanel al boxsizer,
creo una nuova boxsizer (verticale)
creo un'altra boxsizer (orizzontale)
crea un widget Notebook
creo un Panel e metterlo dentro il notebook (addPage)
aggiungo il notebook alla nuova boxsizer (verticale)
aggiungo il sizer verticale quello orizzontale
associo sizer orizzontale alla RightPanel
Aggiungo il pannello sinistro e destro al misuratore principale.
Questo non funziona ...
Forse ho perso qualcosa (blocco mentale su sizers), ma quello che vorrei come di fare è quello di espandere il widget di notebook senza l'uso del sizer verticale all'interno di quello orizzontale (non funziona comunque).
Quindi la mia domanda è. Supponendo che voglio espandere il widget Notebook all'interno di RightPanel per occupare il resto dell'area destra del modulo, come farei per farlo?
Per coloro che capiscono Erlang, questo è quello che ho finora:
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),
...