0

我正在制作一个用于工作的正则表达式测试工具。我希望它是一个简单的 AUI 应用程序,但是在将我认为是AUI 应用程序核心的东西从演示转移到我的代码之后,它在启动时崩溃了。在 wxPython 日志窗口消失之前,我只能看到它的几分之一秒,并且代码在控制台中没有产生任何错误。

这是麻烦的框架。如果我注释掉所有_mgr行,应用程序运行得很好。

class RegexTesterFrame(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(
            self, None, -1, 'Regex tester', (100, 100),
            (400, 400), wx.DEFAULT_FRAME_STYLE
        )

        self.initialize_components()
        self.CreateStatusBar()

    def initialize_components(self):
        self._mgr = wx.aui.AuiManager()
        self._mgr.SetManagedWindow(self)

        self._perspectives = []

        self._mgr.AddPane(
            wx.CheckBox(self, -1, 'test'),
            wx.aui.AuiPaneInfo().Name('Test pane').Caption('Test caption').Top()
        )

        self._mgr.Update()

        self.Bind(wx.EVT_CLOSE, self.on_close)

    def on_close(self, event):
        self._mgr.UnInit()
        del self._mgr
        self.Destroy()

这是完整的代码(约 100 行): http: //pastebin.com/xZS2g1fq

这是我正在使用的演示(大): http: //pastebin.com/G26BMYZx

我对两件事感到好奇 - 为什么应用程序崩溃,以及为什么当 wxPython 应用程序通常崩溃时我没有得到错误输出。

4

1 回答 1

0

从昨天开始我就一直在努力解决这个问题,但像往常一样,当我在 StackOverflow 上提出问题时,我就明白了。首先,我让应用程序在消息框中而不是 stderr 中输出错误信息:

def main():
    try:
        app = RegexTesterApp(True)
        app.MainLoop()
    except:
        import traceback
        xc = traceback.format_exception(*sys.exc_info())
        wx.MessageBox(''.join(xc))

然后错误显示这wx.aui是我没有导入的模块。导入它修复了崩溃。

于 2012-10-11T13:34:30.773 回答