1.1 创建一个wxPython应用

来源:互联网 发布:怎么屏蔽网络监控 编辑:程序博客网 时间:2024/04/28 00:37

Ch1 Starting with wxPython

1.1 创建一个wxPython应用

App对象必须在所有wxPython应用和GUI对象构造前构造。App对象创建应用程序和提供用于分发事件和连接UI行为的主事件循环

这一章会介绍怎么创建一个最小的wxPython应用,这个应用会作为基础用于后面的所有章节

怎么做

import wxclass MyApp(wx.App):    def OnInit(self):        wx.MessageBox("Hello wxPython", "wxApp")        return Trueif __name__ == "__main__":    app = MyApp(False)    app.MainLoop()


运行结果

它是怎么工作的

我们写了什么:
1. 构造了一个wx.App的子类
2. 复写了OnInit方法
3. 调用app的MainLoop方法

  • 当app启动的时候,OnInit方法会被app的MainLoop方法调用并提供了一个入口去启动主逻辑和UI。在这个例子里,我们只用该方法去展示一个普通的消息弹出框。
  • app的MainLoop方法会持续运行直到与该app关联的最后一个窗口关闭。
  • OnInit方法一定要return True为了保证MainLoop的初始化成功
  • MainLoop方法处理和分发所有需要显示UI和按钮点击动作信息
  • 当对话框中OK按钮被点击的时候,他会发送一个被MainLoop方法发送用来关闭对话框的消息。在这个例子里,当对话框被关闭(returned),OnInit也会返回(return),这时候没有存在window对象。所以,app的MainLoop方法也会返回,这段代码就结束了

更多

虽然我们的wx.App对象以例子中的形式创建出来的,但是该类的构造还有4个可选的参数用来修改该对象的一些行为

wx.App(redirect=False, filename=None, useBestVisual=False, clearSigInt=True)
  1. redirect: 如果为True,stdout会重定向到一个调试窗口
  2. filename: 如果redirect为True而该参数非空,stdout就会重定向到该参数指的文件
  3. useBestVisual: 该应用是否尝试使用潜在工具包(underlying toolkit)提供的最好视觉效果(这个在大多系统上没有效果 - -…..)
  4. clearSigInt:如果为True,则允许在命令行中输入Ctrl+C终止进程
0 0