Перенаправить RuntimeError для входа вместо консоли в wxPython? - PullRequest
1 голос
/ 20 октября 2010

Как перенаправить RuntimeError для входа вместо консоли?

В приведенном ниже коде 'Hello' выводится на консоль, которая перенаправляется на wx.TextCtrl. Однако поднятый OnClose RuntimeError печатается на терминал. Как перенаправить 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()

1 Ответ

0 голосов
/ 20 октября 2010

Полагаю, вам просто нужно назначить свой журнал для sys.stderr.

...