2.8 一些最常见的错误现象及解决方法?
有一些错误它们可能会发生在你的wxPython应用程序对象或初始的顶级窗口在创建时,这些错误可能是很难诊断的。下面我们列出一些最常见的错误现象及解决方法:
错误现象
:
程序启动时提示“unable to import module wx。”
原因
:
wxPython模块不在你的PYTHONPATH中。这意味着wxPython没有被正确地安装。如果你的系统上有多个版本的Python,wxPython可能安装在了你没有使用的Python版本中。
解决方法
:
首 先,确定你的系统上安装了哪些版本的Python。在Unix系统上,使用which python命令将告诉你默认的安装。在Windows系统上,如 果wxPython被安装到了相应的Python版本中,它将位于/Lib/site-packages子目录 下。然后重装wxPython。
错误现象
:
应用程序启动时立即崩溃,或崩溃后出现一空白窗口。
原因
:
在wx.App创建之前,创建或使用了一个wxPython对象。
解决方法
:
在启动你的脚本时立即创建wx.App对象。
错误现象
:
顶级窗口被创建同时又立刻关闭。应用程序立即退出。
原因
:
没有调用wx.App的MainLoop()方法。
解决方法
:
在你的所有设置完成后调用MainLoop()方法。
错误现象
:
顶级窗口被创建同时又立刻关闭。应用程序立即退出。但我调用了MainLoop()方法。
原因
:
你的应用程序的OnInit()方法中有错误,或OnInit()方法调用了某些方法(如帧的__init__()方法)。
解决方法
:
在MainLoop()被调用之前出现错误的话,这将触发一个异常且程序退出。如果你的应用程序设置了重定向输出到窗口,那么那些窗口将一闪而过,你不能看到显示在窗口中的错误信息。这种情况下,你要使用 redirect=False关闭重定向选项,以便看到错误提示。
2.9 总结
1、wxPython程序的实现基于两个必要的对象:应用程序对象和顶级窗口。任何wxPython应用程序都需要去实例化一个wx.App,并且至少有一个顶级窗口。
2、应用程序对象包含OnInit()方法,它在启动时被调用。在这个方法中,通常要初始化框架和别的全局对象。wxPython应用程序通常在它的所有的顶级窗口被关闭或主事件循环退出时结束。
3、应用程序对象也控制wxPython文本输出的位置。默认情况下,wxPython重定向stdout和stderr到一个特定的窗口。这个行为使得诊断启动时产生的错误变得困难了。但是我们可以通过让wxPython把错误消息发送到一个文件或控制台窗口来解决。
4、 一个wxPython应用程序通常至少有一个wx.Frame的子类。一个wx.Frame对象可以使用style参数来创建组合的样式。每个 wxWidget对象,包括框架,都有一个ID,这个ID可以被应用程序显式地赋值或由wxPython生成。子窗口是框架的内容,框架是它的双亲。通 常,一个框架包含一个单一的wx.Panel,更多的子窗口被放置在这个Panel中。框架的唯一的子窗口的尺寸自动随其父框架的尺寸的改变而改变。框架 有明确的关于管理菜单栏、工具栏和状态栏的机制。
5、尽管你将使用框架做任何复杂的事情,但当你想简单而快速地得到来自用户的信息时,你可以给用户显示一个标准的对话窗口。对于很多任务都有标准的对话框,包括警告框、简单的文本输入框和列表选择框等等。
有时候需要通过命令行参数, 去让程序执行特定的接口, 然后在执行结束的时候, 程序能够自动退出, 这样的话是不是可以在app的OnInit()结束, 按照参数执行需要的操作之后, 不去调用MainLoop()就可以了呢....