wxPython in Action(三)

现在我们将给空的最小程序增加适当数量的功能,它包含了通常Python编程的标准并能够作为你自己的程

序的一个基准。下面我们创建一个名为spare.py程序:

#!/usr/bin/env python   #1

"""Spare.py is a starting point for a wxPython program."""   #2

import wx 

class Frame(wx.Frame):   #3
    pass 

class App(wx.App):
   
    def OnInit(self):   
        self.frame = Frame(parent=None, title='Spare')   #4
        self.frame.Show() 
        self.SetTopWindow(self.frame)   #5
        return True 

if __name__ == '__main__':   #6
    app = App() 
    app.MainLoop() 


这个程序仍然很小,只有14行代码,但是它增加了几个重要的项目让我们考虑到什么样的代码是好的,完

整的。

#1 这行看似注释,但是在如linux和unix等操作系统上,它告诉操作系统如何找到执行程序的解释器。如

果这个程序被给予的可执行权限(例如使用chmod命令),我们可以在命令行下仅仅键入该程序的名字来

运行这个程序:

% spare.py

这行在其它的操作系统上将被忽略。但是包含它可以实现代码的跨平台。

#2 这是文档字符串,当模块中的第一句是字符串的时候,这个字符串就成了该模块的文档字符串并存储

在该模块的__doc__属性中。你能够在你的代码中、某些开发平台、甚至交互模式下运行的Python解释器

中访问文档字符串:

>>> import spare 
>>> print spare.__doc__ 
Spare.py is a starting point for simple wxPython programs.
>>> 

#3 我们改变了你们创建frame对象的方法。bare版的程序简单地创建了一个wx.Frame类的实例。在spare

版中,我们定义了我们自己的Frame类作为wx.Frame的子类。此时,最终的结果没有什么不同,但是如果

你想在你的框架中显示诸如文本、按钮、菜单的话,你可能就想要你自己的Frame类了。

#4 我们将对frame实例的引用作为应用程序实例的一个属性

#5 在OnInit()方法中,我们调用了这个App类自己的SetTopWindow()方法,并传递给它我们新创建的

frame实例。我们不必定义SetTopWindow()方法,因为它继承自wx.App父类。SetTopWindow()方法是一个

可选的方法,它让wxPython方法知道哪个框架或对话框将被认为是主要的。一个wxPython程序可以有几个框架

,其中有一个是被设计为应用程序的顶级窗口的。

#6 这个是Python中通常用来测试该模块是作为程序独立运行还是被另一模块所导入。我们通过检查该模

块的__name__属性来实现:

if __name__ == '__main__': 
   app = App() 
   app.MainLoop() 

 

文章来源:www.pythontik.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值