wxPython程序由两个必要的对象组成,应用对象APP和顶级窗口对象Frame

应用程序对象APP管理主事件循环MainLoop()

顶级窗口对象Frame管理数据,控制并呈现给用户

先看一段最简单的代码:

import wx

class App(wx.App):

def OnInit(self):

frame = wx.Frame(parent = None, title = "Kobe")

frame.Show()

return True

app = App()

app.MainLoop()

上面的代码说明了开发wxPython程序必须的5个步骤:

1. 导入wxPython包

2. 子类化wxPython应用类

3. 定义应用程序的初始化方法

4. 创建一个应用程序类的实例

5. 进入这个应用程序的主事件循环(MainLoop())

OnInit()方法没有参数,返回值为BOOL,此部分可以做一些关键数据初始化的动作,如果失败,返回False,程序退出。通常会在此方法中创建一个Frame对象,并调用Frame的Show()方法。

应用程序对象开始于实例被创建时,结束于最后一个应用程序窗口被关闭,与Python脚本开始执行没有先后关系。

每个wxPython程序必须有一个application对象和至少一个frame对象。application对象必须是wx.App的一个实例或在OnInit()方法中定义的一个子类的一个实例,当程序启动时,OnInit()方法将被wx.App父类调用。

上面的代码中,定义了名为MyApp的子类,在OnInit()方法中创建frame对象。

wx.Frame(self, parent, id, title, pos, size, style, name)

其中,只有parent是必须的,其余都有默认值,返回值为空。下面是其各个参数的类型:

parent (type=Window)

id (type=int)

pos (type=Point)

size (type=Size)

style (type=long)

name (type=String)

Returns: bool

调用Show()方法使frame可见,否则不可见。可以通过给Show一个布尔值参数来设定frame的可见性:

frame.Show(False) # 框架不可见

frame.Show(True) # 框架可见

frame.Hide() # 等同于frame.Show(False)

该程序并没有定义一个__init__()方法,意味着父方法wx.App.__init()__将在对象创建时被自动调用。若自己定义__init__()方法,还需要调用其基类的__init__()方法。

class App(wx.APP):

def __init__(self):

wx.APP.__init__(self)

如果没有这样做, wxPython将不被初始化,并且OnInit()方法也不会调用

当程序进入主循环后,控制权将转交给wxPython。wxPython GUI程序主要响应用户的鼠标和键盘事件。当一个应用程序的所有框架被关闭后,app.MainLoop()方法将返回,程序退出。

import wx

class Frame(wx.Frame):

def __init__(self, image, parent=None, id =-1,

pos = wx.DefaultPosition,

title = "Hello, wxPython!"):

temp = image.ConvertToBitmap()

size = temp.GetWidth(), temp.GetHeight()

wx.Frame.__init__(self, parent, id, title, pos, size)

self.bmp = wx.StaticBitmap(parent = self, bitmap = temp)

class App(wx.App):

def OnInit(self):

image = wx.Image('wxPython.jpg', wx.BITMAP_TYPE_JPEG)

self.frame = Frame(image)

self.frame.Show()

self.SetTopWindow(self.frame)

return True

def main():

app = App()

app.MainLoop()

if __name__ == '__main__':

main()

wxpython应用程序对象与顶级窗口_wxPython--学习笔记相关推荐

  1. wxpython应用程序对象与顶级窗口_wxPython学习笔记(二)

    如何创建和使用一个应用程序对象? 任何wxPython应用程序都需要一个应用程序对象.这个应用程序对象必须是类wx.App或其定制的子类的一个实例.应用程序对象的主要目的是管理幕后的主事件循环. 父类 ...

  2. wxpython应用程序对象与顶级窗口_wxPython 基础 | 学步园

    wxPython应用程序的两个主要部分是:应用程序对象和顶级Window对象 应用程序对应通常指wx.App的子类. Window对象通查功能指Frame或者Dialog. 创建wx.App子类 1 ...

  3. 好程序员web前端分享Nodejs学习笔记之Stream模块

    好程序员web前端分享Nodejs学习笔记之Stream模块 一,开篇分析 流是一个抽象接口,被 Node 中的很多对象所实现.比如对一个 HTTP 服务器的请求是一个流,stdout 也是一个流.流 ...

  4. db4o_8.0对象数据库官方文档翻译_学习笔记三

    紧接上篇:db4o_8.0对象数据库官方文档翻译_学习笔记二 3. Object Manager Enterprise Overview(OME视图)即OME插件的使用 If you did not  ...

  5. 图片适应窗口_HTMLCSS学习笔记(八)-- 宽高自适应

    宽高自适应 网页布局中经常要定义元素的宽和高.但很多时候我们希望元素的大小能够根据窗口或子元素自动调整,这就是pc自适应. 自适应的优点: 元素自适应在网页布局中非常重要,它能够使网页显示更灵活,可以 ...

  6. python中的(类和对象)1.5万字学习笔记

    类和对象 面向对象的概述 对象 类 面向向对象程序设计的特点 类的定义和使用 魔术方法 创建类的成员并访问 访问限制(也可以说是私有成员和公有成员) 属性 创建用于计算的属性 为属性添加安全保护机制 ...

  7. 《程序员的自我修养》学习笔记

    程序员的自我修养 第一章 谈职业生涯 1.程序员应该是那些不断追求更高技术,并有着自己产品梦的工匠.当你通过对自己技术不断打磨,一次又一次做出那些优秀产品的时候,你会发现自己不再是他人口中的码农或是屌 ...

  8. c++ dll发消息到主窗口_PyQt5学习笔记(五)窗口图形绘制

    PyQt5提供了绘制图形的API,支持绘制: 文本 各种图形(直线,点,椭圆,弧,扇形,多边形等) 图像 绘制图形需要一个类QPainter.基本的绘制过程: # 创建QPainter对象 paint ...

  9. .NET Core开发实战(第13课:配置绑定:使用强类型对象承载配置数据)--学习笔记...

    13 | 配置绑定:使用强类型对象承载配置数据 要点: 1.支持将配置值绑定到已有对象 2.支持将配置值绑定到私有属性上 继续使用上一节代码 首先定义一个类作为接收配置的实例 class Config ...

最新文章

  1. 图像数据增强(平移,旋转,亮度变换,翻转,添加高斯噪声,缩放,裁剪)
  2. Libgdx学习笔记:分享自己写的异步加载
  3. 【时间序列】使用微软Power BI进行时间序列预测
  4. 从构建分布式秒杀系统聊聊WebSocket推送通知
  5. java js 执行效率_JavaScript提高加载和执行效率的方法
  6. 计算机管理用户和组无法访问,同一工作组无法访问如何解决【详解】
  7. 什么是AES算法?(整合版)
  8. 对pthread_create未定义的引用
  9. 关于Python局部变量和全局变量必须知道的几句话
  10. redis list放入对象_Redis从入门到入土:详细讲解内存模型以及常用命令
  11. 又忙了一天,什么书也不看。
  12. 深度学习之神经网络核心原理与算法-caffekeras框架图片分类
  13. 如何用.NET编写ActiveX 控件
  14. 大学计算机一级准考证打印,河海大学计算机等级考试准考证打印入口
  15. matlab中低通滤波器程序,MATLAB低通滤波器程序
  16. 【渝粤题库】广东开放大学物业管理基本制度与政策 形成性考核
  17. python 列表长度_python求列表长度
  18. Uploadifive上传
  19. SQL语句——处理函数
  20. Java游戏开发——飞行射击类游戏

热门文章

  1. 的训练过程_【能力模式】能力培养是一个训练过程,掌握三个要点,一个诀窍...
  2. 攻防世界base除4_CCTV5周末看点:周六!女足世界杯1/4决赛连战三场;周日!中超15轮国安碰鲁能...
  3. js根据月数计算有效日期_你真的看懂产品生产日期了么
  4. Auto Lisp 标注子样式_FAIR 开放大规模细粒度词汇级标记数据集 LVIS,连披萨里的菠萝粒都能完整标注...
  5. linux桌面环境知乎,24 个值得尝试的 Linux 桌面环境 | Linux 中国
  6. linux 虚拟机同步时间
  7. mysql 创建删除表_mysql创建删除表的实例详解
  8. python 的filter()函数
  9. Python列表的增删查改及常用操作
  10. Python:粘包问题