(Tôi đã gắn thẻ câu hỏi này là Python cũng vì tôi hiểu mã Python nên các ví dụ trong Python cũng được chào đón!).Trong erlang: Làm thế nào để mở rộng wxNotebook trong một bảng điều khiển?
Tôi muốn tạo ra một cửa sổ đơn giản trong wxWidgets:
tôi có thể tạo một bảng điều khiển chính mà tôi thêm vào một hình thức
tôi kết hợp một boxsizer vào bảng chính (tách nó ra làm đôi, theo chiều ngang).
tôi thêm LeftPanel đến boxsizer,
tôi thêm RightPanel đến boxsizer,
tôi tạo ra một boxsizer mới (dọc)
tôi tạo ra một boxsizer (ngang)
tôi tạo một widget Notebook
tôi tạo một Panel và đặt nó bên trong Máy tính xách tay (addpage)
tôi thêm các máy tính xách tay đến boxsizer mới (dọc một)
tôi thêm các sizer dọc ngang một
tôi kết hợp sizer ngang với RightPanel
Tôi thêm bảng điều khiển Trái và Phải vào bộ sizer chính.
này không hoạt động ...
Có lẽ tôi đã bỏ lỡ một cái gì đó (khối tinh thần về Sizers) nhưng những gì tôi sẽ như làm là để mở rộng widget máy tính xách tay mà không cần dùng các sizer dọc bên trong một ngang (nó không hoạt động anyway).
Vì vậy, câu hỏi của tôi là. Giả sử tôi muốn mở rộng tiện ích Notebook bên trong RightPanel để chiếm phần còn lại của khu vực bên phải của biểu mẫu, tôi sẽ làm như thế nào?
Đối với những người hiểu Erlang, Đây là những gì tôi có cho đến nay:
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),
...