2010-10-20 2 views
1

Comment puis-je rediriger RuntimeError pour enregistrer à la place de la console?Rediriger RuntimeError pour se connecter à la place de la console dans wxPython?

Dans le code ci-dessous, le 'Hello' est imprimé sur la console, qui est redirigé vers le wx.TextCtrl. Le RuntimeError déclenché OnClose est cependant imprimé sur le terminal. Comment puis-je rediriger le RuntimeError pour voir le même journal que le '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() 

Répondre

0

Je suppose que vous devez simplement affecter votre journal à sys.stderr.

+0

Haha! C'était plus facile que je ne le pensais. Silly d'avoir négligé ce petit détail. – c00kiemonster

Questions connexes