2015-10-22 37 views
0

我在我的wxPython GUI上運行unittests。測試的工作與預期大致相同,只是我創建的框架不會消失。到我的測試結束時,我有30個或更多的頂級窗口。這是我的安裝和拆卸代碼:如何在unittest中銷燬wxPython框架

def setUp(self): 
    self.app = wx.App() 
    self.frame = MyGridFrame() 

def tearDown(self): 
    self.frame.Destroy() 
    for wind in wx.GetTopLevelWindows(): 
     wind.Destroy() 
    self.app.Destroy() 

我嘗試了四行你在我拆解功能看到幾種不同的組合,但它們都具有相同的(缺少任何)的影響。

回答

0

這裏是一個拆解功能從文件正常工作: https://github.com/wxWidgets/Phoenix/blob/master/unittests/wtc.py

def tearDown(self): 
    def _cleanup(): 
     for tlw in wx.GetTopLevelWindows(): 
      if tlw: 
       tlw.Destroy() 
     wx.WakeUpIdle() 
     #self.app.ExitMainLoop() 
    wx.CallLater(50, _cleanup) 
    self.app.MainLoop() 
    del self.app 

想必事件循環已運行到實際抓取和處理()調用window.Destroy產生的關閉事件。這很有道理,但花了我一段時間才弄清楚。