spare.py:
self.frame = Frame(parent=None, title=’Spare’)
#!/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 里面的parent和title不可省略,否则显示不出来框架
self.frame.Show()
self.SetTopWindow(self.frame) #5 SetTopWindow方法不用定义的原因是因为App类继承自wx.App所有也有这个方法
return True
if __name__ == ’__main__’: #6
app = App()
app.MainLoop() #<span style="color:#FF0000;">执行app类的成员方法?</span>
一个wxPython程序可以有几个框架,其中有一个是被设计为应用程序的顶级窗口的。
wx.PySimpleApp让你能够运行你的wxPython程序而无需创建你自己定制的应用程序类。
我们建议在OnInit()方法中创建顶级框架
补充说明:
__init__
(self, redirect, filename, useBestVisual, clearSigInt)
其实,在实例化wx.App的时候,第二个参数redirect的含义就是是否将输出重定向到stdout/stderr窗口。实例化的时候通过设置redirect=False,
就能直接在command line窗口中查看输出/错误提示了。
class Frame(wx.Frame):
def __init__(self,parent,id,title):
print 'Frame __init__'
wx.Frame.__init__(self,parent,id,title)
这个框架的变量顺序不能错
wx.App.__init__(self,redirect,filename)
wxPython允许你在创建应用程序时设置两个参数。第
一个参数是redirect,如果值为True,则重定向到框架,如果值为False,则输出
到控制台。如果参数redirect为True,那么第二个参数filename也能够被设置,这
样的话,输出被重定向到filename所指定的文件中而不定向到wxPython框架。
你可以使用wx.App的SetExitOnFrameDelete(flag)方法来改变默认的行
为。如果flag参数设置为False,那么最后的窗口被关闭后wxPython应用程序仍
然会继续运行。这意味着wx.App实例将继续存活。