2010-10-20 25 views
1

如何將RuntimeError重定向到日誌而不是控制檯?重定向RuntimeError而不是在wxPython中的控制檯?

在下面的代碼中,'Hello'被打印到控制檯,該控制檯被重定向到wx.TextCtrl。然而,RuntimeError凸起的OnClose被打印到終端。如何重定向RuntimeError以查看與'Hello'相同的日誌?

import sys 
import wx 

class RedirectText: 
    def __init__(self, log): 
     self.log = log 
    def write(self,string): 
     self.log.AppendText(string) 

class MainFrame(wx.Frame): 
    def __init__(self): 
     wx.Frame.__init__(self, None) 
     self.log = wx.TextCtrl(self, -1, '', style=wx.TE_READONLY|wx.TE_MULTILINE) 
     sizer = wx.BoxSizer() 
     sizer.Add(self.log, 1, wx.ALL | wx.EXPAND, 5) 
     self.SetSizer(sizer) 
     redirection = RedirectText(self.log) 
     sys.stdout = redirection 
     print 'hello' 
     self.Bind(wx.EVT_CLOSE, self.OnClose) 
    def OnClose(self, event): 
     raise RuntimeError('error') 

if __name__ == "__main__": 
    app = wx.PySimpleApp() 
    frame = MainFrame() 
    frame.Show() 
    app.MainLoop() 

回答

0

我假設你只需要將你的日誌分配給sys.stderr。

+0

哈哈!這比我想象的要容易得多。傻了,忽略了那個小細節。 – c00kiemonster 2010-10-20 13:10:52