wxPython 基础

    技术2022-05-11  5

     

    wxPython应用程序的两个主要部分是:应用程序对象和顶级Window对象

     

    应用程序对应通常指wx.App的子类。

    Window对象通查功能指Frame或者Dialog。

     

    创建wx.App子类

    1 定义子类

    2 在子类定义中重写OnInit()方法

    3 在应用程序main方法中创建这个类的一个实例

    4 调用应用程序实例的MainLoop方法,这个方法将控制转交给wxPython

     

    OnInit方法在事件循环开始之前调用,这个方法没有参数,只是返回Boolean值来暗示程序是否应该继续运行。通常应该返回True,返回False可以用来处理初始化过程中的重要错误。由于OnInit方法在父类的__init__方法中调用,所以如果需要覆盖__init__方法,那么wx.App.__init__(self) 必须被首先调用。

     

    通常情况下,在OnInit方法内部会创建一个Frame对象,并且调用Frame对象的Show方法。也可以使用SetTopWindow方法设定为顶级Window

     

    在应用程序只有一个Frame的时候也可以不使用wx.App的子类,转而使用wx.PySimpleApp(),只不过此时App的创建要在Frame之前。

    参看一下代码:

    if __name__ == '__main__': 

        app = wx.PySimpleApp() 

        frame = MyNewFrame(None) 

        frame.Show(True) 

        app.MainLoop() 

     

    PySimpleApp的内容如下:

    class PySimpleApp(wx.App): 

        def __init__(self, redirect=False, filename=None, 

                     useBestVisual=False, clearSigInt=True): 

            wx.App.__init__(self, redirect, filename, useBestVisual, 

                    clearSigInt) 

        def OnInit(self): 

            return True 

     

    只应该在应用程序非常简单,不需要任何其他的全局参数的时候使用wx.PySimpleApp

     

    应用程序对象的生命周期:

    wxPython应用程序对象的声明周期始于应用程序实例的创建,终于最后一个应用程序窗口关闭。

    这意味这在wx.App创建之前不能创建Frame的实例。

     

    wxPython应用程序的生命周期模型如下:

     

     


    最新回复(0)