wxPython学习笔记(初识)
今天正式开始学习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学习笔记(初识)的更多相关文章
- Arduino学习笔记① 初识Arduino
1.前言 近段时间,博主陆续更新了ESP8266学习笔记,主要开发平台是Arduino.但是,对于很多无基础的初学者来说,甚至不了解Arduino是什么.因此,博主决定加入一个Arduino学 ...
- wxPython学习笔记(三)
要理解事件,我们需要知道哪些术语? 事件(event):在你的应用程序期间发生的事情,它要求有一个响应. 事件对象(event object):在wxPython中,它具体代表一个事件,其中包括了事件 ...
- wxPython学习笔记(二)
如何创建和使用一个应用程序对象? 任何wxPython应用程序都需要一个应用程序对象.这个应用程序对象必须是类wx.App或其定制的子类的一个实例.应用程序对象的主要目的是管理幕后的主事件循环. 父类 ...
- wxPython学习笔记
------------恢复内容开始------------ 学习wxPython 资料 1.wxpython wiki Getting started with wxPython https://w ...
- wxPython学习笔记(一)
创建最小的空的wxPython程序 frame = wx.Frame(parent=None, title='Bare') frame.Show() return True app = App() a ...
- RTX51 Tiny实时操作系统学习笔记—初识RTX51 Tiny
一,RTX51 Tiny简单介绍 RTX51 Tiny是一种实时操作系统(RTOS),能够用它来建立多个任务(函数)同一时候运行的应用(从宏观上看是同一时候运行的,但从微观上看,还是独立运行的 ...
- capwap学习笔记——初识capwap(一)(转)
初识CAPWAP 2.1 CAPWAP简介 CAPWAP——Control And Provisioning of Wireless Access Points Protocol Specificat ...
- Nancy in .Net Core学习笔记 - 初识Nancy
前言 去年11月份参加了青岛MVP线下活动,会上老MVP衣明志介绍了Nancy, 一直没有系统的学习一下,最近正好有空,就结合.NET Core学习总结了一下. 注: 本文中大部分内容都是对官网文档的 ...
- Node学习笔记---初识Node
博客原文地址:Claiyre的个人博客 https://claiyre.github.io/ 博客园地址:http://www.cnblogs.com/nuannuan7362/ 如需转载,请在文章开 ...
随机推荐
- jvm-初探
目录 1,Java体系结构 2.jvm执行引擎 3,ClassLoader的体系结构 4,java class文件 概述 其实,学java不算新手了,但是却感觉很多基本的知识,我们一开始也许是记住而不 ...
- UICollectionView设置item(cell)之间间距为0(紧挨在一起的效果)
UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; self.layout = layout ...
- idea 多模块项目依赖父工程class找不到问题
比如,我们有这么个过程,项目结构如下: a --b --c a是总结点,b是子节点,c是父节点 b依赖父节点class,通过maven构建时通常我们会在子节点中添加父节点依赖,如: <depen ...
- tomcat中有关配置文件的说明
在以往的tomcat使用中本人一直都没有注意到tomcat的conf目录下配置文件的作用,都是"拿来主义"的思想,从未深究.但是最近遇到很多有关tomcat配置的问题,很是头大,所 ...
- java测试1
发大水 package com.java1234.activiti.variable; import java.util.Date; import java.util.HashMap; import ...
- 【COGS1049】天空中的繁星
[题目背景] 第二届『Citric』杯NOIP提高组模拟赛 第二题 [题目描述] Lemon最近买了一台数码相机.某天Lemon很无聊,于是对着夜空拍了一张照片,然后把照片导入了电脑.Lemon想依靠 ...
- windows phone使用sharpcompress进行解压压缩文件
在做移动端时,当我们需要从服务器获得多个文件时,为了节约流量,服务器一般会返回一个压缩包,那我们就是下载完成后,在手机中进行解压到指定位置 SharpCompress就是可以在手机中进行解压一个类库( ...
- Java学习----Java程序结构
1.什么是类 在源文件中程序员自己定义的通过class关键字,自己给类名这样的定义的一个类,而类里包含一个或多个方法 2.什么是源文件 由程序员使用java语言编写的以.java为结尾的一个文件 3. ...
- 页面d初始化加载
1.$(document).ready(function () { alert("Hello Word!"); }); 或简写为 2.$(function(){ alert(&qu ...
- VS2013安装过程截图
================================================================ VS 2013 中新增了很多提高开发人员工作效率的新功能,比如自动补全 ...