Python 在erlang中:如何在面板中展开wxNotebook?

Python 在erlang中:如何在面板中展开wxNotebook?,python,layout,erlang,wxwidgets,Python,Layout,Erlang,Wxwidgets,(因为我理解Python代码,所以我也将这个问题标记为Python,所以也欢迎使用Python中的示例!) 我想在wxWidgets中创建一个简单窗口: 我创建一个主面板,并将其添加到表单中 我将boxsizer与主面板关联(将其水平分成两部分)。 我将LeftPanel添加到boxsizer, 我将RightPanel添加到boxsizer, 我创建了一个新的boxsizer(垂直) 我创建了另一个boxsizer(水平) 我创建了一个笔记本小部件 我创建了一个面板并将其放入笔记本(addpa

(因为我理解Python代码,所以我也将这个问题标记为Python,所以也欢迎使用Python中的示例!)

我想在wxWidgets中创建一个简单窗口:
我创建一个主面板,并将其添加到表单中
我将boxsizer与主面板关联(将其水平分成两部分)。
我将LeftPanel添加到boxsizer,
我将RightPanel添加到boxsizer,
我创建了一个新的boxsizer(垂直)
我创建了另一个boxsizer(水平)
我创建了一个笔记本小部件
我创建了一个面板并将其放入笔记本(addpage)
我将笔记本添加到新的boxsizer(垂直笔记本)
我将垂直尺寸标注器添加到水平尺寸标注器中
我将水平尺寸标注器与右侧面板关联
我将左右面板添加到主尺寸器。

这不管用

也许我错过了一些东西(关于尺寸标注器的心理障碍),但我想做的是扩展笔记本小部件,而不使用水平尺寸标注器中的垂直尺寸标注器(它无论如何都不起作用)

所以我的问题是。假设我想扩展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),
  ...
在我弄清楚我需要做什么之后,我(尽快)结束这个问题

基本上,我将主面板的add命令的比例改为1(这将扩展整个内容)

新代码:

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