2009-08-02 37 views
8

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

Trả lời

4

Tôi đang đóng câu hỏi này (trong thời gian sớm nhất có thể) sau khi tôi đã tìm ra những gì tôi cần phải làm gì.

Về cơ bản tôi đã thay đổi tương ứng với 1 trong tổng số lệnh add vào bảng chính (điều này sẽ mở rộng toàn bộ điều)

Code mới:

%% 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}]), 
Các vấn đề liên quan