《wxPython in Action》 chapter 1、2 笔记
wxPython 是 wxWidgets 的 Python 实现,“w” for Microsoft Windows and “x” for Unix X server.
wxPython 中,最基本的组件是 wx.App 和 wx.Frame。每个 wxPython 应用必须包含这两个组件。
wx.App 是应用程序,通过 event loop 管理生命周期。
wx.Frame 是窗口,通过在窗口内添加 widget(组件,如 button)控制样式和行为。
所有 wxPython 的操作,必须在 Application 的生命周期内进行。
所以,必须先创建 App,后创建Frame。否则报错:
对于小的应用,可以用如下方式
import wx app = wx.PySimpleApp() # create App first frame = wx.Frame(None) # define a subclass and use it frame.Show(True) app.MainLoop()
关键点:
执行结果如下:
更优雅的用法是:
创建 wx.App 的子类并实现 OnInit 函数 -> 创建子类的实例。
OnInit 方法中,一般创建至少一个 Frame,并设置为 show。
在 App subclass 的 OnInit 中创建 top-level frame,可以保证创建 Frame 时已有 App 存在。
wx.App 执行 __init__ 时会自动调用子类的 OnInit 方法。
OnInit 无入参,返回 boolean 值,若返回 False,App 立即停止。
子类的初始化一般通过子类的 OnInit 方法实现,而不使用 __init__。
若要自定义子类的 __init__ 方法,则一定要调用 wx.App.__init__(self) ,否则 OnInit 不会执行。
实例代码:
import wx class KunthApp(wx.App): def OnInit(self): frame = wx.Frame(None) frame.Show(True) return True app = KunthApp() app.MainLoop()
运行结果:
wxPython 基本框架与运行原理 -- App 与 Frame,布布扣,bubuko.com
wxPython 基本框架与运行原理 -- App 与 Frame
原文:http://www.cnblogs.com/misspy/p/3632329.html