我正在制作正则表达式测试工具。我希望它是一个简单的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应用程序崩溃时我没有得到任何错误输出。
答案 0 :(得分: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
是我未导入的模块。导入它修复了崩溃。