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--学习笔记的更多相关文章

  1. wxPython学习笔记(初识)

    今天正式开始学习wxPython,基于对类的不熟悉,理解有点生硬,但还是做了些笔记. 1.是什么组成了一个wxpython程序? 一个wxpython程序必须有一个application(wx.App ...

  2. wxPython学习笔记(三)

    要理解事件,我们需要知道哪些术语? 事件(event):在你的应用程序期间发生的事情,它要求有一个响应. 事件对象(event object):在wxPython中,它具体代表一个事件,其中包括了事件 ...

  3. wxPython学习笔记(二)

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

  4. wxPython学习笔记

    ------------恢复内容开始------------ 学习wxPython 资料 1.wxpython wiki Getting started with wxPython https://w ...

  5. wxPython学习笔记(一)

    创建最小的空的wxPython程序 frame = wx.Frame(parent=None, title='Bare') frame.Show() return True app = App() a ...

  6. wxPython学习笔记1

    wxpython介绍: wxPython 是 Python 语言的一套优秀的 GUI 图形库,允许 Python 程序员很方便的创建完整的.功能键全的  GUI 用户界面. wxPython 是作为优 ...

  7. python学习笔记目录

    人生苦短,我学python学习笔记目录: week1 python入门week2 python基础week3 python进阶week4 python模块week5 python高阶week6 数据结 ...

  8. wxpython学习资源

    http://www.cnblogs.com/dyx1024/archive/2012/07/15/2592202.html wxPython:布局管理器sizer介绍 ogs.com/dyx1024 ...

  9. Python学习笔记之基础篇(-)python介绍与安装

    Python学习笔记之基础篇(-)初识python Python的理念:崇尚优美.清晰.简单,是一个优秀并广泛使用的语言. python的历史: 1989年,为了打发圣诞节假期,作者Guido开始写P ...

  10. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

随机推荐

  1. 消息队列(五)--- RocketMQ-消息存储2

    概述 RocketMQ存储中主要用到以下知识点: mmap 文件映射 内存池 异步刷盘 consumeQueue 同时本节将介绍各个重要的类,本篇文章将介绍 mmap 文件映射的相关方法和内存池相关知 ...

  2. python manage.py shell

    启动python有两种方式:python manage.py shell和python. 这两个命令 都会启动交互解释器,但是manage.py shell命令有一个重要的不同: 在启动解释器之前,它 ...

  3. C语言:假定输入的字符串只包含字母和*号,fun函数:除了尾部的*号以外,将字符的其他*号进行全部删除,形参p已经指向字符串中最后一个字母。-利用折半查找整数m在有序数组中的位置,若找到,返回下标值,否则返回-1。

    //假定输入的字符串只包含字母和*号,fun函数:除了尾部的*号以外,将字符的其他*号进行全部删除,形参p已经指向字符串中最后一个字母. #include <stdio.h> void f ...

  4. 【JavaWeb+Echarts+EL表达式】用图表形式展示数据

    1. Echarts环境配置 https://www.echartsjs.com/zh/download.html 选择需要的,然后等待Build完成之后,就会自动弹出下载框啦! 把下载好的js放在w ...

  5. Python - input时的strip()

    例如在读文件里面的文本时,每一行默认后面有\n或者有\r,所以strip用于去除首尾空格或者回车符.

  6. Intellij IDEA中创建Package变成一级目录

    1.创建包,但是出来的却是一级目录 2.因为Compact Middle Packages默认勾选上了,取消掉即可

  7. 关于vscode的配置

    Git插件 通过GitLens -- Git supercharged可以很方便的查看历史作者 Setting.json(谨慎使用,因为对import进行排序改变后可能导致类的循环引用,因此不要轻易改 ...

  8. C++11⾥⾯很好⽤的auto声明

    本文摘录于柳神笔记: auto 是C++11⾥⾯的新特性,可以让编译器根据初始值类型直接推断变量的类型.⽐如这样: 当然这个在算法⾥⾯最主要的⽤处不是这个,⽽是在STL中使⽤迭代器的时候, auto ...

  9. 如果谷歌浏览器突然打不开网页,而且显示:"网页可能暂时无法连接,或者它已永久性地移动到了新网址,返回ERR_TUNNEL_CONNECTION_FAILED",怎么办?用这个方法,亲试有效!!!

    打开cmd: 依次输入: ipconfig /flushdnsnbtstat –rnetsh int ip resetnetsh winsock reset 效果图 然后我的浏览器就能正常使用了,很有 ...

  10. Python语言——列表生成式

    生成[1x1, 2x2, 3x3, ..., 10x10]列表: >>> L = [] >>> for x in range(1, 11):... >> ...