Python Web 服务开发者: 现实世界,第二部分
2007-03-29 12:13:08 来源:WEB开发网我们选择使用 wxPython 库而不使用 TkInter 或者 Python 中所包含的其他更小的 GUI 工具包。在 wxWindows 库周围主要就是 Python 包装,它是一种非常快速以及完完全全跨平台的窗口操作框架(windowing framework)。为了演示创建 GUI 的目的,我们手工操作控制布局,而不使用可用的 wxWindows WYSIWYG 布局工具,比如 wxDesigner。这样就形成了 amazonFrame.__init__( ) 方法中的大量代码。我们广泛应用 wxBoxSizer 控件来对有趣的控件的布局。
需要引起注意的是,由于 wxWindows 事件环(event loop)的线程问题,需要在导入 wxPython 之前导入 SOAPpy 并创建代理。而且,因为启动执行的原因,我们要从本地文件导入而不是从 Amazon.com 站点导入 WSDL。
当运行应用程序时,就创建了 amazonWidgetApp 并调用 MainLoop( ) 来启动事件环。请留意 amazonWidgetFrame 的 __init__( ) 方法内部定义的 amazonImagePanel 类。我们定义了两个主要的事件处理程序: OnSearch( ) 用于处理按下 “Search Amazon” 按钮, OnSelectionChange( ) 用于处理 “Query Results” 列表框中的条目选择。
OnSearch( ) 获取 GUI 中的 模式设置,构建请求结构,然后调用 amazon SOAPpy 代理上的 KeywordSearchRequest SOAP 方法。SOAP 方法调用是在 try - except 块中执行的,一般来说,这种方式比较好,但这里我们这样做只是捕捉 SOAP.faultType 异常。我们应该检查异常类型,但此处我们将假定它意味着没有找到相应结果。如果所有这一切都正常,我们就保留 amazonWidgetFrame 中的 self.results 属性,填充“Query Results”列表框,然后从 Amazon.com 中获取结果详细信息中所引用的全部图像。
OnSelectionChange( ) 从 self.results 中获取适当的详细信息并将各自的组件填充到 amazonWidgetFrame 上去,最后加载正确的图像副本并执行重新布局。
更多精彩
赞助商链接