今天正式开始学习wxPython,基于对类的不熟悉,理解有点生硬,但还是做了些笔记。

1、是什么组成了一个wxpython程序?

一个wxpython程序必须有一个application(wx.App)对象和至少一个frame(wx.Frame)对象。而用于填充frame的则是一系列的wx.Window的子类,wx.Window的子类都可以拥有wx.Control的子类,在上图中,panel就是最常见的wx.Window的子类之一,而wx.StaticText和wx.TextCtrl则是最常见的wx.Control之一。

1)常用的wx.Window的子类有哪些?

常用的如wx.Panel、wx.StatusBar、wx.SplitterWindow、wx.PopupWindow、wx.TopLevelWindow,以上这些类都直接继承了_core.Window,在_windows.py中实现。除此之外还有MenuBar、Control,在_core.py中实现。

Python的命名具有很好的见名知意效果,而需要备注一笔的是,wx.Frame和wx.Dialog实际上就是wx.TopLevelWindow的子类,其中wx.Frame的实例可以通过

SetMenuBar、GetMenuBar、

CreateStatusBar、GetStatusBar、SetStatusBar、SetStatusText、

CreateToolBar、GetToolBar、SetToolBar

等方法与菜单栏、状态栏和工具栏进行交互,其中wx.ToolBar属于wx.Controls。

2)其他的wx.Window子类还有哪些?

比较少用的则有wx.MDIClientWindow、wx.SashWindow、wx.SplashScreenWindow、wx.PyWindow,这些也都是直接继承了_core.Window,在_windows.py中实现。

3)wx.Control的子类有哪些?

他们是:

wx.ToolBarBase、wx.ListCtrl、wx.TreeCtrl、wx.GenericDirCtrl、wx.PyControl、wx.DatePickerCtrlBase、wx.HyperlinkCtrl、wx.PickerBase、wx.CollapsiblePane、wx.SearchCtrlBase、wx.InfoBar、wx.AnyButton、wx.CheckBox、wx.Gauge、wx.StaticBox、wx.StaticLine、wx.StaticText、wx.StaticBitmap、wx.ScrollBar、wx.SpinButton、wx.SpinCtrl、wx.SpinCtrlDouble、wx.RadioBox、wx.RadioButton、wx.Slider。

2、是什么让程序工作?

见:WxPython In Action/ChapterThree

1)wxpython有哪些事件?

在wxpython中,代表事件的是事件对象——wx.Event或其子类。

wx.Event的子类有

wx.CloseEvent:当关闭一个框架的时候被触发

wx.CommandEvent:这是与窗口控件的交互事件,包括菜单栏选择、单击一个button等等,这应该是涉及最广的

wx.KeyEvent:键盘按键事件

wx.MouseEvent:鼠标事件

wx.PaintEvent:当窗口内容需要被重画时触发

wx.SizeEvent:窗口大小或布局

wx.TimerEvent:由类wx.Timer类创建,是定期的事件

2)最常用的事件是鼠标事件

由于wxPython被用于开发桌面软件而非Android/iOS,我们的操作都是通过鼠标完成。所以很有必要弄清楚wxPython的鼠标事件都有哪些,鼠标事件一共有14个:

wx.EVT_LEFT_DOWN

wx.EVT_LEFT_UP

wx.EVT_LEFT_DCLICK

wx.EVT_MIDDLE_DOWN

wx.EVT_MIDDLE_UP

wx.EVT_MIDDLE_DCLICK

wx.EVT_RIGHT_DOWN

wx.EVT_RIGHT_UP

wx.EVT_RIGHT_DCLICK

wx.EVT_MOTION

wx.ENTER_WINDOW

wx.LEAVE_WINDOW

wx.EVT_MOUSEWHEEL

wx.EVT_MOUSE_EVENTS

3)涉及最广的事件是命令事件

EVT_COMMAND(id, event, func)

EVT_COMMAND_RANGE(id1, id2, event, func)

EVT_BUTTON(id, func)

EVT_CHECKBOX(id, func)

EVT_MENU(id, func)

EVT_COMMAND_LEFT_CLICK(id, func)

EVT_COMMAND_LEFT_DCLICK(id, func)

EVT_COMMAND_RIGHT_CLICK(id, func)

EVT_COMMAND_SET_FOCUS(id, func)

EVT_COMMAND_KILL_FOCUS(id, func)

EVT_COMMAND_ENTER(id, func)

4)绝对布局

特点:1、基于控件的坐标摆放控件,2、简单直观,方法单一,3、不能随窗口的改变而调整位置

静态文本:wx.StaticText

文本域:wx.TextCtrl

按钮:wx.Button

单选与复选按钮:wx.CheckBox / wx.RadioButton

列表框:wx.ListBox

图片:wx.StaticBitmap

5)相对布局

BoxSizer

GridSizer

FlexGridSizer

GridBagSizer

6)多线程与事件

要点:1、不使用多线程可能会导致图形界面卡死,

2、更高效率,更多任务,

3、thread.start_new_thread(函数名,(参数1,参数2,...))

4、使用Threading模块创建线程

7)控件事件

按钮点击、文本域内容的改变、鼠标滑过、键盘按下

wxPython学习笔记(初识)的更多相关文章

  1. Arduino学习笔记① 初识Arduino

    1.前言     近段时间,博主陆续更新了ESP8266学习笔记,主要开发平台是Arduino.但是,对于很多无基础的初学者来说,甚至不了解Arduino是什么.因此,博主决定加入一个Arduino学 ...

  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. RTX51 Tiny实时操作系统学习笔记—初识RTX51 Tiny

     一,RTX51 Tiny简单介绍    RTX51 Tiny是一种实时操作系统(RTOS),能够用它来建立多个任务(函数)同一时候运行的应用(从宏观上看是同一时候运行的,但从微观上看,还是独立运行的 ...

  7. capwap学习笔记——初识capwap(一)(转)

    初识CAPWAP 2.1 CAPWAP简介 CAPWAP——Control And Provisioning of Wireless Access Points Protocol Specificat ...

  8. Nancy in .Net Core学习笔记 - 初识Nancy

    前言 去年11月份参加了青岛MVP线下活动,会上老MVP衣明志介绍了Nancy, 一直没有系统的学习一下,最近正好有空,就结合.NET Core学习总结了一下. 注: 本文中大部分内容都是对官网文档的 ...

  9. Node学习笔记---初识Node

    博客原文地址:Claiyre的个人博客 https://claiyre.github.io/ 博客园地址:http://www.cnblogs.com/nuannuan7362/ 如需转载,请在文章开 ...

随机推荐

  1. java编程思想-注解思维导图

  2. 苹果新政,禁止开发者在App中加入检查更新功能

    今天妥妥的被拒了,苹果更新了新政策,不能在应用中出现检测更新的功能.AppStore会自动提醒用户更新. 去掉更新按钮,之后再尝试下看能通过不能

  3. Hive学习之一 《Hive的介绍和安装》

    一.什么是Hive Hive是建立在 Hadoop 上的数据仓库基础构架.它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储.查询和分析存储在 Hadoop 中的大规模数据 ...

  4. NOI 191钉子和小球.cpp

    #include<iostream> #include<cstdio> #include<cstring> using namespace std; ][]; in ...

  5. Android学习----发行版本

    Android 1.1(Bender“发条机器人”) Android 1.5( Cupcake“纸杯蛋糕”) Android 1.6(Donut 甜甜圈) Android 2.0(Éclair:闪电泡 ...

  6. grails框架中在使用domain的save方法保存时保存不成功

    1.如果报错,自行根据异常查找错误,这里不说明 2.如果为报错,我遇到的就是domain中的字段属性与数据库中为同步 (1)你的domain是新的,在增加新的字段属性时未使用update更新数据库,造 ...

  7. IE6不完全支持!important

    !important !important是CSS1中定义的语法,作用是提高指定样式规则的应用优先权.语法格式如:.demo{color:red !important;} IE6支持重定义的!impo ...

  8. MVC中的UrlHelper

    authour: chenboyi updatetime: 2015-04-27 22:32:47 friendly link:   1,CodeSimple: ps:因为UrlHelper涉及的知识 ...

  9. Serilog with Autofac

    http://serilog.net/  ---不错的日志工具 1.直接绑定 builder.Register<ILogger>((c, p) => { return new Log ...

  10. sock_ntop等函数

    inet_ntop的一个基本问题是:它要求调用者传递一个指向某个二进制地址的指针, 而该地址通常包含在一个套接字地址结构中,这就要求调用者必须知道这个结构的格式和地址簇, 为了使用这个函数,我们必须为 ...