2012-03-10 21 views
0

我想在窗口加載後運行一些代碼。我想象使用EVT_OPEN,作爲EVT_CLOSE的對立面,做到這一點,只有找出它不存在。
我有一些代碼必須在窗口加載後運行,並更新該窗口中的標尺。因此我無法在框架的__init__中運行它。我該怎麼做呢?類似EVT_OPEN wxPython

回答

0

您可以嘗試EVT_SHOW

http://www.wxpython.org/docs/api/wx.ShowEvent-class.html

請注意,此事件兩種顯示和隱藏發生 - 你需要調用GetShow,以確定哪些事件發生。

或者你可以做這樣的事情:

wx.CallAfter(self.update_gauge)(例如)在__init__

+0

謝謝你,'wx.CallAfter()'工作正常。 – BrtH 2012-03-11 11:51:32

0

EVT_WINDOW_CREATE。從文檔:「一旦窗口對象(底層GUI對象)存在,EVT_WINDOW_CREATE事件就會立即發送。」

+0

我想你的答案,但它不工作。我在框架的__init__中使用了'self.Bind(wx.EVT_WINDOW_CREATE,self.onStartUp)',但'onStartUp'從不執行。 – BrtH 2012-03-10 22:19:14

+0

當然,它是否有效取決於你如何使用它。舉例來說,在創建窗口後綁定處理程序會很容易,然後,當然,由於窗口已經創建,所以不會調用處理程序。您可能想要使用PreWindow,Create和PostCreate,而不是正常路線。例如,請參閱http://wiki.wxpython.org/TwoStageCreation。我認爲EVT_WINDOW_CREATE就是你說的你想要的,但是要確定你需要如何使用它,以及它是否是最好的方法,我需要更多地瞭解你想要的。 – tom10 2012-03-11 03:38:00

+0

謝謝你的解釋,但畢竟我使用了'wx.CallAfter()'。事實證明這工作正常,爲什麼我會比需要更復雜? – BrtH 2012-03-11 11:51:02