天天看點

python wx子產品notebook_python – 在erlang中:如何在面闆中擴充wxNotebook?

(我已經将這個問題标記為

Python,因為我了解

Python代碼,是以也歡迎使用Python中的示例!).

我想在wxWidgets中建立一個簡單的視窗:

我建立了一個主面闆,我将其添加到表單中

我将一個boxsizer與主面闆相關聯(将它分成兩個,水準).

我将LeftPanel添加到boxsizer,

我将RightPanel添加到boxsizer,

我建立了一個新的boxsizer(垂直)

我創造了另一個boxsizer(水準)

我建立了一個Notebook小部件

我建立一個Panel并将其放入Notebook(addpage)

我将筆記本添加到新的boxsizer(垂直一個)

我在水準方向添加了垂直分級器

我将水準sizer與RightPanel相關聯

我将Left和Right面闆添加到主sizer中.

這不起作用……

也許我錯過了一些東西(關于sizer的精神障礙),但我想做的是擴充筆記本小部件,而不使用水準内部的垂直大小調整器(它無論如何都不起作用).

是以我的問題是.假設我想在RightPanel中擴充Notebook小部件以占用表單右側區域的其餘部分,我該怎麼做呢?

對于那些了解Erlang的人來說,這就是我到目前為止所擁有的:

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

...