wxWidgets是一个使用C++语言实现的GUI框架,这意味着它是一系列C++类,其中风装了很多特性。虽然wxWidgets主要用来开发UI应用程序,但是它也包含了很多C++程序员可以使用的特性,包括ANSI C++中不支持的数据结构的实现,例如字符串,HashTable,另外也包含诸如网络套接字和线程等系统特性的接口。由于这些特性已经存在于Python语言或者python标准库中了,所以这些wxWidgets类的包装器wxPython并没有提供,你应该使用Python中的对等对象。
wxWidgets的目的是允许一个C++程序从一个平台迁移到另外一个平台的时候为了编译和运行只需要修改很少的代码,并且能够在不同的平台间保持一个的观感。
一下是一个C++ wxWidgets程序,这个程序来自于wxWidgets网站上Robert Roebling的教程。这个程序创建了一个带有两个元素(退出和关于)的菜单的空白窗口,展示这些内容的主要原因是为了与Python代码进行比较:
对于熟悉C++的程序原来说可能会存在一定困惑,为什么没有main()函数?
在wxWidgets中,宏IMPLEMENT_APP(MyApp)自动建立一个默认的main方法,这个方法管理wxWidgets程序的初始化。
与大部分跨平台的接口工具包一样,对程序元可见的类和方法实际上都是一些列子类的代理。通常情况下wxWidgets可以运行的每一个平台都有一个子类(是否还记得Abstract Factory Pattern?),与当前平台相关的子类会自动被使用,现在wxWidget主要支持一下一些平台:
- Microsoft Windows
- Mac OS
- Gnome Toolkit(GTK+)在大部分现代Unix系统中都可以使用
在每一个平台下,wxWidgets尝试使用合适的本地部件和特性,通常尽量模仿本地观感。
如果你说西大型的,面向对象的接口工具包,例如MFC或者Java Swing,你会感觉到wxWidgets的基本结构很相似。唯一不同的地方是wxWidget并没有明确区分部件和包含其他部件的容器(例如Java Swing中的JComponent和JContainer)。也就是说可以前在地在任何部件上追加部件,不管它们是不是所谓的容器。
wxWidgets起源与1992年,由Julian Smart在University of Edinburgh’s Artificial Intelligence Applications Institute创建。当时Smart需要一种机能在Unix又能在Windows下运行的软件,现有的商用工具包都特别贵,所以他编写了自己的工具包。其中wx的含义分别是Windows中的w和Unix中的x。
wxWidgets除了支持Python开发之外,还支持Ada, Basic, C#, Eiffel, Euphoria, Haskell, Java, JavaScript, Lua, Perl 和 Ruby。
Python + wxWidgets:
python使得wxWidgets的开发不像C++那么困难。
而wxWidgets使得Python的GUI不但具有了本地话的观感而且具有了本地化的速度。
C++ 环境 |
Python 环境 |
程序员负责内存管理 |
Python负责内存管理 |
静态类型,多态困难 |
动态类型,多态很容易 |
程序反射非常有限 |
程序反射容易,允许强大的抽象 |
不能很容易地使用函数作为参数(函数式编程) |
函数可以像其他参数一样传递 |
每次运行之前需要编译 |
运行时解析 |
以下是使用wxPython完成的相同的程序,详细参看代码:
相对于wxidget C++程序来说有两点内容需要说明:
- wxPython没有自动的宏来生成main函数,因此我们必须自己声明main方法
- python允许方便地传递函数,所以可以直接是哟功能wx.Bind()方法,而C++必须使用DECLARE_EVENT_TABLE和BEGIN_EVENT_TABLE两个宏
分享到:
相关推荐
**wxWidgets介绍** wxWidgets是一个跨平台的C++库,它允许开发人员使用标准的C++语法创建原生的GUI应用程序。这个库支持多种操作系统,包括Windows、macOS、Linux等,使得代码可以在不同的平台上无缝运行。...
1. **wxWidgets介绍**:wxWidgets是一个C++库,提供了丰富的控件和API,使得开发者可以使用相同的代码在不同平台上构建原生GUI应用。 2. **Visual Studio集成**:VS2013作为流行的Windows开发环境,支持wxWidgets的...
**wxWidgets介绍** wxWidgets 是一个跨平台的C++库,它允许开发者使用单一的源代码在多个操作系统上创建原生的GUI(图形用户界面)应用程序。wxWidgets 提供了一个全面的API,覆盖了从基本的窗口和控件到高级的...
**wxWidgets介绍** wxWidgets是一个开源的C++库,它为开发者提供了在多个操作系统上创建原生GUI应用程序的能力。这个库模拟了各种平台的API,包括Windows、macOS、Linux等,使得程序员可以用一套代码实现跨平台的...
**wxWidgets介绍** wxWidgets是一个跨平台的C++库,它允许开发人员使用标准的C++语法创建原生的GUI应用程序。这个库支持多种操作系统,包括Windows、macOS、Linux和其他Unix-like系统,使得开发者无需为每个平台...
**wxWidgets介绍** wxWidgets是一个跨平台的C++库,它允许开发人员使用标准的C++语法创建原生的GUI应用程序。这个库支持多种操作系统,包括Windows、macOS、Linux等,提供了一套完整的控件集和编程接口,使得开发者...
5. **绘图和图形**:介绍如何使用 wxWidgets 的绘图功能,包括线条、形状、图像的绘制等。 6. **高级话题**:如数据库访问、网络编程、国际化和本地化等高级特性的使用方法。 7. **实例解析**:“wxWidgets_...
全书共有20章,第·1·章简要介绍了·wxWidgets·的发展历史和框架结构,第2章介绍了wxWidgets的程序框架及其实现,第3章深入剖析了wxWidgets的事件处理机制,第4~11章详细讲述了wxWidgets的图形用户界面、数据结构...
1. **wxWidgets安装与配置**:介绍如何在不同的操作系统上下载、安装和配置wxWidgets开发环境,包括设置编译器和链接器选项。 2. **基础概念与结构**:讲解wxWidgets的基本类,如`wxApp`、`wxFrame`和`wxWindow`,...
总之,本书为准备使用wxWidgets进行跨平台开发的开发者提供了一个全面的学习资源,它详细介绍了wxWidgets的核心功能和如何利用这些功能来创建功能丰富的跨平台GUI应用程序。通过对本书内容的学习,开发者可以掌握...
这两本书深入浅出地介绍了wxWidgets的使用,包括基础概念、控件使用、布局管理、事件处理和高级主题。无论是初学者还是有经验的开发者,都能从中获得宝贵的知识。 1. **基础概念**:书中会介绍如何配置开发环境,...
1. **安装与配置**:详细介绍了如何在不同操作系统上安装wxWidgets库,并设置开发环境,包括编译器配置、链接器选项等。 2. **类库概述**:提供wxWidgets中的主要类和组件的概述,包括窗口、按钮、菜单、对话框、...
核心知识点1:wxWidgets库介绍 wxWidgets库是基于C++的,其目标是提供一套与操作系统API紧密集成的类,使得开发者可以轻松创建原生外观的应用程序。这个库不仅提供了丰富的控件和布局管理器,还支持事件处理、图形...
- **简介**:这部分介绍了 wxWidgets 的基本概念、设计哲学以及如何开始使用这个库。 - **教程**:提供逐步指导,帮助初学者快速上手,通过简单的实例了解如何创建窗口、控件以及响应用户事件。 - **类参考**:列...
wxWidgets 2.8.10 版本可能包含了对 SVG 图形的支持,这份文档可能介绍了如何在应用程序中创建、显示和操作 SVG 图像。 6. **tex2rtf_trl.pdf**: 这个文件名暗示了一个转换工具,可能用于将 TeX 或 LaTeX 格式的...
通过本文的介绍,我们可以了解到wxWidgets作为一种强大的跨平台GUI库,为开发者提供了丰富的功能和便捷的开发体验。无论是对于初学者还是经验丰富的开发者来说,掌握wxWidgets都是非常有价值的。希望本文能帮助读者...
本指南将详细介绍如何利用MinGW(Minimalist GNU for Windows)和Code::Blocks集成开发环境(IDE)在Windows上编译和使用wxWidgets库。 ### 1. wxWidgets简介 **1.1 wxWidgets版本** wxWidgets库有多个版本,每个...
1. **入门指南**:介绍如何设置开发环境,创建第一个 wxWidgets 项目,以及基本的窗口和控件使用方法。 2. **类参考**:列出所有可用的 wxWidgets 类,详细描述每个类的成员函数、属性和用途。 3. **事件处理**:...