2016-09-16 374 views
0

我想在筆記本中動態創建和刪除頁面。在主類中,我成功創建並使用按鈕添加頁面。這些頁面是一個單獨的課程,內部有一個按鈕。 我知道我可以把按鈕放在筆記本外面,並從主類中刪除它們,但是我想使用頁面自己的按鈕來自毀整個頁面,因爲它將不再需要。wx.Notebook中的自我刪除頁面

對不起,我不發佈任何代碼,但我從我的手機發布。此外,這似乎是一個不太具體的問題,需要一個最小的工作示例。

回答

0

正如您所猜測的,在從自己的事件處理程序中銷燬UI對象時需要小心。當前事件處理程序不僅仍然處於活動狀態,還可能有其他正在等待處理的事件仍在隊列中,並且如果目標對象在交付時被銷燬,則可能會導致崩潰。

要做的最好的事情是推遲銷燬,直到完成當前和可能的待處理事件處理程序並且除了要執行的銷燬之外沒有任何事情等待UI對象完成。最好的方法是使用wx.CallAfter。它會調用一個函數,並在下一次事件循環清空時給它一個參數,所以隱含地沒有任何其他事情正在等待完成或發送到有問題的UI對象。

在你的情況下,可以安全地做一些事情,比如立即從筆記本中刪除頁面,並隱藏頁面窗口。然後使用wx.CallAfter調用某個函數(可能在筆記本類中),該函數調用頁面窗口的Destroy方法並執行任何其他需要的清理。我建議分解這兩組任務的原因並不是因爲要調用函數需要很長時間,但在某些情況下,它可能足夠長,以便在短暫狀態下瞬間閃爍,所以外觀不太平滑用戶。