总目录:wxPython 教程 目录 本节内容:wxPython 简介 介绍 本节译自:zetCode 下一篇:wxpython 教程 (二): 开始编写
wxPython 简介
应用(application)是用来执行特定任务或一组任务的电脑程序。网页浏览器、媒体播放器、文字处理程序都是典型的应用样例。不同应用可以划分至四种不同的应用领域:
图:不同种类的应用领域
在线商店应用、wiki、微博等都是受欢迎的网页(web)应用,我们通过网页浏览器可以访问它们。桌面(Desktop)应用的例子则包括 Maya、Opera、Open Office或 Winamp。企业级(Enterprise)应用则指复杂的大型应用。移动(Portables)应用包括所有为手机等移动设备开发的应用。
编程语言
目前有很多种非常流行的编程语言,以下列表来自于TIOBE Programming Community Index (2014,10)。
排名 | 语言 | 投票率 |
---|---|---|
1 | C | 17.6% |
2 | Java | 13.5% |
3 | Objective-C | 10.1% |
4 | C++ | 4.8% |
5 | C# | 4.7% |
6 | Basic | 3.5% |
7 | PHP | 2.9% |
8 | Python | 2.3% |
9 | Perl | 2.1% |
10 | Transact-SQL | 2.1% |
可见python属于最热门语言之一。
Python
Python 是一种脚本语言,受ABC 和Haskell编程语言的启发,最初由Guido van Rossum开发,发布于1991年。Python是一种高级、通用、跨平台的解释性语言,有人也叫它“动态语言”。Python非常简约易学,而且不常用分号或括号,它使用缩进来控制代码结构。如今有来自世界各地的大批志愿者维护Python项目。
Python程序员在编写图形用户界面时,至少有三种选择:PyGTK、wxPython以及PyQt。本教程主要讲解wxPython的使用。
wxPython
wxPython是一个创建桌面GUI应用的跨平台工具包(toolkit),它的主要开发者是Robin Dunn。使用wxPython,开发者可以在Windows、Mac和多种Unix系统上开发应用程序。wxPython是对成熟的跨平台C++ 库wxWidgets的封装,主要包括以下5个基本模块:
图:wxPython 模块
Controls模块提供图形应用中通用的部件(widgets),比如按钮(Button)、工具栏(Toolbar)或者记事本(Notebook)。在Windows系统中,widgets被称为controls。Core模块包含了开发中用到的各种类(classes)。这些类包括Object类(所有类的父类)、Sizers类(对部件进行布局的类)、Events类(事件)、基本的几何结构类(如点Point和矩形Rectangle)。GDI (Graphics Device Interface,图形设备接口)是在部件上作图的类的集合,包括操作字体(Fonts)、颜色(Colours)、笔刷(Brushes)、笔(Pen)和图片(Images)等类。Misc包括多种其他类,比如日志(logging)、应用配置、系统设置等。Windows模块包含多种窗口类,比如面板(Panel)、对话框(Dialog)、框架(Frame)或者可滚动窗口(Scrolled Window)。
wxPython API
wxPython API是一系列方法和对象的集合。技术上来说,wxPython是对C ++图形界面编程API wxWidgets的封装,所以它不是native的API,即不是直接由python编写的。
在wxPython中,我们有很多的widgets,他们可以被分为以下几组。
Base Widgets
Base Widgets,这些widgets提供最基本的功能,被称作祖先类,一般不直接使用。
图:Base widgets
Top level Widgets
Top level Widgets,即顶级widgets,这些widgets彼此独立存在。
图:Top level Widgets
Containers
Containers即容器,一般包含其他widgets。
图:Containers
Dynamic Widgets
Dynamic widgets,即动态部件,这些部件可以直接被用户操作,如下图所示。
图:Dynamic widgets
Static Widgets
Static Widgets,即静态部件,用户无法对它们进行编辑。
图:Static Widgets
Other Widgets
Other Widgets,即其他部件,包括工具栏、状态栏以及菜单栏。
图:Other Widgets
继承
wxPython中部件之间存在继承的关系,对于面向对象编程来说,继承是非常重要的一部分。widgets构建出层级关系,widgets可以从其他widgets继承功能特性。已存在的类叫做基类、父类或祖先,继承的类叫做派生类、子类或者后代。这些术语借鉴自生物学概念。
图:继承图
比如我们在应用中使用了一个button widget,这个button widget继承自4个不同的基类。最近的类是wx.Control类。controls是指可以放在其他容器widgets上的widgets。并非所有的widgets都是controls,比如wx.Dialog就不是。
button widget是一种窗口部件,所有出现在屏幕上的部件都是小窗口,所以它们都继承自wx.Window类。
每个window对象都可以对事件(Events)作出响应,button widget也不例外。点击按钮时,会触发wx.EVT_COMMAND_BUTTON_CLICKED事件。Button widget通过wx.Window继承了wx.EvtHandler类。每一个响应事件的widget都必须继承自wx.EvtHandler类。
最后,所有的类都继承自wx.Object类,它是wxPython中所有类的父类。
以上,即本节内容:wxPython简介。你无须完全看懂以上,相关内容我们会在后续章节中详细介绍。