wxpython应用程序对象与顶级窗口_wxPython--学习笔记
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--学习笔记相关推荐
- wxpython应用程序对象与顶级窗口_wxPython学习笔记(二)
如何创建和使用一个应用程序对象? 任何wxPython应用程序都需要一个应用程序对象.这个应用程序对象必须是类wx.App或其定制的子类的一个实例.应用程序对象的主要目的是管理幕后的主事件循环. 父类 ...
- wxpython应用程序对象与顶级窗口_wxPython 基础 | 学步园
wxPython应用程序的两个主要部分是:应用程序对象和顶级Window对象 应用程序对应通常指wx.App的子类. Window对象通查功能指Frame或者Dialog. 创建wx.App子类 1 ...
- 好程序员web前端分享Nodejs学习笔记之Stream模块
好程序员web前端分享Nodejs学习笔记之Stream模块 一,开篇分析 流是一个抽象接口,被 Node 中的很多对象所实现.比如对一个 HTTP 服务器的请求是一个流,stdout 也是一个流.流 ...
- db4o_8.0对象数据库官方文档翻译_学习笔记三
紧接上篇:db4o_8.0对象数据库官方文档翻译_学习笔记二 3. Object Manager Enterprise Overview(OME视图)即OME插件的使用 If you did not ...
- 图片适应窗口_HTMLCSS学习笔记(八)-- 宽高自适应
宽高自适应 网页布局中经常要定义元素的宽和高.但很多时候我们希望元素的大小能够根据窗口或子元素自动调整,这就是pc自适应. 自适应的优点: 元素自适应在网页布局中非常重要,它能够使网页显示更灵活,可以 ...
- python中的(类和对象)1.5万字学习笔记
类和对象 面向对象的概述 对象 类 面向向对象程序设计的特点 类的定义和使用 魔术方法 创建类的成员并访问 访问限制(也可以说是私有成员和公有成员) 属性 创建用于计算的属性 为属性添加安全保护机制 ...
- 《程序员的自我修养》学习笔记
程序员的自我修养 第一章 谈职业生涯 1.程序员应该是那些不断追求更高技术,并有着自己产品梦的工匠.当你通过对自己技术不断打磨,一次又一次做出那些优秀产品的时候,你会发现自己不再是他人口中的码农或是屌 ...
- c++ dll发消息到主窗口_PyQt5学习笔记(五)窗口图形绘制
PyQt5提供了绘制图形的API,支持绘制: 文本 各种图形(直线,点,椭圆,弧,扇形,多边形等) 图像 绘制图形需要一个类QPainter.基本的绘制过程: # 创建QPainter对象 paint ...
- .NET Core开发实战(第13课:配置绑定:使用强类型对象承载配置数据)--学习笔记...
13 | 配置绑定:使用强类型对象承载配置数据 要点: 1.支持将配置值绑定到已有对象 2.支持将配置值绑定到私有属性上 继续使用上一节代码 首先定义一个类作为接收配置的实例 class Config ...
最新文章
- 图像数据增强(平移,旋转,亮度变换,翻转,添加高斯噪声,缩放,裁剪)
- Libgdx学习笔记:分享自己写的异步加载
- 【时间序列】使用微软Power BI进行时间序列预测
- 从构建分布式秒杀系统聊聊WebSocket推送通知
- java js 执行效率_JavaScript提高加载和执行效率的方法
- 计算机管理用户和组无法访问,同一工作组无法访问如何解决【详解】
- 什么是AES算法?(整合版)
- 对pthread_create未定义的引用
- 关于Python局部变量和全局变量必须知道的几句话
- redis list放入对象_Redis从入门到入土:详细讲解内存模型以及常用命令
- 又忙了一天,什么书也不看。
- 深度学习之神经网络核心原理与算法-caffekeras框架图片分类
- 如何用.NET编写ActiveX 控件
- 大学计算机一级准考证打印,河海大学计算机等级考试准考证打印入口
- matlab中低通滤波器程序,MATLAB低通滤波器程序
- 【渝粤题库】广东开放大学物业管理基本制度与政策 形成性考核
- python 列表长度_python求列表长度
- Uploadifive上传
- SQL语句——处理函数
- Java游戏开发——飞行射击类游戏
热门文章
- 的训练过程_【能力模式】能力培养是一个训练过程,掌握三个要点,一个诀窍...
- 攻防世界base除4_CCTV5周末看点:周六!女足世界杯1/4决赛连战三场;周日!中超15轮国安碰鲁能...
- js根据月数计算有效日期_你真的看懂产品生产日期了么
- Auto Lisp 标注子样式_FAIR 开放大规模细粒度词汇级标记数据集 LVIS,连披萨里的菠萝粒都能完整标注...
- linux桌面环境知乎,24 个值得尝试的 Linux 桌面环境 | Linux 中国
- linux 虚拟机同步时间
- mysql 创建删除表_mysql创建删除表的实例详解
- python 的filter()函数
- Python列表的增删查改及常用操作
- Python:粘包问题