2012-03-02 33 views
2

標題的情況是有趣的,我知道。它就像電影「初戀」的情形。夢中的夢在夢中。 大家好,我正在使用wxpython製作應用程序。 我想要實現這樣的事情。(這只是問題的想法)「盜夢空間」與wxPython的

func1(self,event): 
     some widgets added 
     func2 
func2(self,event): 
     remove previous widgets (by using event.GetEventObject().GetParent().Hide()) 
     add new ones 
     func3 
func3(self,event): 
     remove widgets added in func2 
     recall widgets added in func1 (event.GetEventObject().GetParent().Show()) 

我已經走過了太多的內部,像功能,跳轉到其它嵌套 功能,我沒有跟蹤事件的3倍。

如果我

event.GetId() 

事件的ID(列表中的)存儲,而在每一個功能遍歷,是那裏,如果我可以用這些ID來 替換方式

event.GetEventObject().GetParent().Show() 
event.GetEventObject().GetParent().Hide() 

id1.GetEventObject().GetParent().Hide() 
id2.GetEventObject().GetParent().Show() 

我只想知道這種事情是可能的嗎? 或者更簡單的方法嗎?

回答

0

如果仍然有這樣的麻煩,我找到了一些方法... 首先,你不需要使用這個ID ..更簡單的方法是 創建不同的面板... ..... 當你想隱藏一個,你可以簡單地做

panelname.Hide() 

當你想顯示另一個

panelname.Show() # Or this also works (event.GetEventObject().GetParent().Show()\Hide()) 

注:1)記得給所有部件(按鈕等)個人ID(或-1)。 2)你也可以使用函數調用來創建重疊面板(例如 - 單擊按鈕後)。 3)您也可以創建一個公共面板(父面板),然後創建子面板,並在初始化體。然後,您可以簡單地將這些面板隱藏並顯示在一個綁定的函數中(可以使用按鈕等)。

我解決我的問題是這樣的。不需要使用GetId()。但可能有其他方法。所以,如果你有其他想法,請分享。我希望這有助於某個人......總之,謝謝大家。