天天看点

wxpython实战笔记(一)

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实例将继续存活。