WxPython——坚实的基础

坚实的基础

在学习任何一门技术或者应用的时候,基础都是必不可少的,往后的这几个章节基本都是一些偏向理论的内容,比如如何梳理你的应用程序结构和逻辑,wxpython的生命周期等等,但是这些基础都是必不可少的,了解了这些内容之后,对于之后的界面的编写都是有很大好处的。

我们wxpython的基础其实就是两个主要的对象,一个是顶级界面对象,也就是Frame对象;还有一个对象是应用程序对象,也就是App对象。这两个对象就是我们整个的wxpython的基础,搞清楚这两个对象,之后在编写更复杂的页面的时候也会得心应手。

关于所要求的对象我们需要知道什么?

首先让我们来描述一下这两个对象,应用程序对象(App)的主要作用是启动并管理主事件循环,主事件循环是wxpython的核心所在,没有这个主事件循环,你的wxpython将无法启动,无法显示页面,更无法响应事件。

顶级窗口对象的作用就是显示控件和展示数据使用,如果不创建并设置顶级窗口的话,会导致程序运行就直接结束了,因为没有窗口被显示出来。

他的逻辑其实很简单,当应用程序启动的时候,应用程序对象将会被首先创建,然后启动主事件循环,并寻找顶级窗口,如果找到了那么就展示出来,如果没有设置顶级窗口,那么就直接退出程序;然后在顶级窗口中,展示控件和数据,控件绑定着事件处理函数,当控件被触发的时候,比如当按钮被按下,这个时候他会将事件发送到主事件循环,然后寻找于这个事件绑定的事件处理函数,然后运行这个函数,之后的结果继续返回到顶级窗口中,然后重复触发-展示这个循环,直到顶级窗口被关闭。

如何创建一个应用程序对象?

任何wxPython应用程序都需要一个应用程序对象。这个应用程序对象必须是类wx.App或其子类的一个实例。应用程序对象的主要目的是管理幕后的主事件循环。这个事件循环响应于窗口系统事件并分配它们给适当的事件处理函数,也叫事件处理器,这两个名词是一个意思。这个应用程序对象对wxPython进程的管理如此的重要以至于在你的程序没有实例化一个应用程序对象之前你不能创建任何的wxPython图形对象,就是说应用程序对象(App)要比顶级窗口对象(Frame)先创建出来。

父类wx.App也定义了一些属性,它们对整个应用程序是全局性的。在wx.App这个父类里面,其实已经定义了一些默认的配置,而大多数情况下,这些默认的配置就是够用的了,比如链接数据库的配置,处理错误的配置,读取配置文件的配置等等,我们要做的其实就是用它来设置一下顶级窗口,其他的配置我们大多数情况下只需要了解一下就可以了,不用去修改它。

创建一个应用程序对象(App)

创建一个应用程序对象其实很简单,而且我们也建议无论在你编写什么界面的时候,都先创建一个应用程序对象,即使你不修改父类App的任何配置,也先创建一个App对象出来。创建一个应用程序对象需要以下四个步骤:

  • 1、定义一个类,继承自wx.App
  • 2、在定义的子类中写一个OnInit()方法
  • 3、在你的程序的main方法中创建这个类的一个实例
  • 4、调用应用程序实例的MainLoop()方法。这个方法将程序的控制权转交给wxPython

我们在第一章中看到过OnInit()方法。它在应用程序开始时并在主事件循环开始前被wxPython系统调用。这个方法不要求填写任何的参数,但是要返回一个布尔值True,如果所返回的值是False,则应用程序将立即退出。大多数情况下,你将想要该方法返回的结果为True。只有在处理某些错误的时候,我们需要关闭这个软件,比如内存泄漏,资源缺失等等。

关于OnInit方法和__init__方法的冲突问题。
当我们在应用程序对象中使用了OnInit方法的时候,其实OnInit是属于wxpython中的一部分,我们所有的初始化的操作其实都在OnInit方法中完成就可以了,如果遇到了必须使用__init__方法的时候,则必须在方法中再次调用父类的__init__方法,就像是这样:wx.App.__init__(self)

一般情况下,你的应用程序对象里面需要实例化一个Frame对象,或者是通过SetTopWindow方法来指定一个顶级窗口,这两种方法都是可以的,然后你的顶级窗口会默认当作那些没有被设置为顶级窗口的父窗口,而区分是不是顶级窗口的方法除了看有没有在应用程序对象中被设置为顶级窗口之外,还有一个重要的点就是顶级窗口对象是没有父窗口的。

何时可以省略App对象
虽说我们之前说了,在你创建一个界面之前都建议先创建一个应用程序对象,但是在某些时候,其实他也是可以被省略的。其实到目前位置,我们创建应用程序对象就是为了设置顶级窗口这一个目的,而当我们的界面中只有一个界面的时候,它会被默认设置为顶级对象,那么这个时候,其实我们是可以省略掉这个应用程序对象的。但是这个的实用性其实不高,我们前期学习还是要遵循一个规范开发的要求,这个了解一下就可以了。

理解应用程序的生命周期

你的wxPython应用程序对象的生命周期开始于应用程序实例被创建时,在最后一个应用程序窗口被关闭时结束。这个没有必要与你的wxPython应用程序所在的Python脚本的开始和结束相对应。Python脚本可以在wx

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值