[英]wxNotebook - inner wxPanel - call method when page is changed
我有wxNotebook
和幾個wxNotebookPage
。 每個頁面都有從wxPanel
繼承的不同內容。 更改活動頁面時調用wxPanel
中的什么方法? 如果我更改面板,我想更新面板內容。
我將類似的功能綁定到正在工作的調整大小事件。
void MyPanel::Init() {
this->Bind(wxEVT_SIZE, &MyPanel::OnResize, this);
}
void MyPanel::OnResize(wxSizeEvent& ev){
//do something to update panel
}
注意:這是C++代碼,但編程語言並不重要(可以是Python)。 我將更新解決方案,我只需要相同的邏輯或 wxWidget API 調用。
更改活動頁面時調用 wxPanel 中的什么方法?
面板上沒有調用任何方法。 而是將頁面更改事件發送到筆記本控件。 您可以為此事件設置處理程序,類似於為上面面板上的大小事件設置處理程序的方式。 通常這是在您的框架的構造函數中完成的,如下所示:
MyFrame::MyFrame(...):wxFrame(...)
{
...
<notebookobject>->Bind(wxEVT_NOTEBOOK_PAGE_CHANGED, &MyFrame::OnPageChanged, this);
...
}
...
void MyFrame::OnPageChanged(wxBookCtrlEvent& event)
{
// do something in response to the page change here.
}
在實際更改頁面之前,還會發送一個頁面更改事件。 頁面更改事件有一個額外的功能,如果您想禁止頁面被更改,您可以在頁面更改處理程序中對事件 object 調用 Veto()。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.