1. 简介

1.1 OSLite是什么

OpenSees(Open System for Earthquake Engineering Simulation)是由美国国家自然科学基金(NSF)资助、西部大学联盟“太平洋地震工程研究中心”(Pacific Earthquake Engineering Research Center,简称PEER)主导、加州大学伯克利分校为主研发而成的、用于结构和岩土方面地震反应模拟的一个较为全面且不断发展的开放源代码分析平台,它具有便于改进,易于协同开发的优点,研究人员可以通过二次开发来添加新单元、材料本构以及求解器。

与商业软件相比,OpenSees并没有提供图形用户界面和可视化模块。使用过程中,用户一般是借助文本编辑器编辑输入文件,然后再交由OpenSees进行计算得到计算结果。由于缺乏可视化模块和前后处理,使得用户不得不花费很大精力创建输入文件,当结构模型较为复杂时,没有直观的模型显示,输入文件容易出错且难以排查。

OSLite 是免费、轻量级的OpenSees前后处理程序。OSLite的图形用户界面采用开放源代码的QT界面库开发;模型可视化采用了开放源代码的VTK可视化工具库

OSLite开发的目标是完成一款以OpenSees为计算内核的全功能结构通用有限元软件,并为其他内核求解器预留接口。

1.2 如何获得本软件

非常感谢关注OSLite这个软件,它是出于公益目的开发的软件,您可以免费获得它。
您可以通过发送email到邮箱jacques.chen@qq.com索取所需的版本,或者直接通过Internet在线下载,

下载地址为:http://oslite.tech

2. OSLite的开发过程

OSLite的开发过程包含两个阶段,2016年10月~2017年6月本人在非洲工作期间,因个人兴趣爱好,在学习OpenSees过程中没有好的可视化软件使用,基于wxWidgets界面库+VTK可视化库开发的第一版OSLite。后来因为一些个人原因中断了开发,并且前期架构设计较差难以继续拓展,于2020年6月开始推掉全部代码重新设计架构,基于QT界面库+VTK可视化库开发的新版本OSLite。

2.1 第一阶段

  • 2016年10月01日 启动项目

  • 2016年10月09日 初步完成 Dxf文件接口设计

  • 2016年10月30日 通过OpenGL实现杆系模型可视化

  • 2016年12月15日 通过Trie-Tree算法实现关键字补全

  • 2016年12月21日 增加多线程调用OpenSees功能

  • 2017年01月04日 基于VTK重写可视化模块

  • 2017年01月24日 增加多种平面单元可视化

  • 2017年02月03日 通过内嵌TCL解释器重写代码解析模块

  • 2017年02月16日 通过增加多种实体单元可视化

  • 2017年05月27日 增加实时位移显示

  • 2017年06月11日 重写程序主界面,初步加入位移云图功能

  • 2017年06月19日 加入位移动画回放功能

  • 2017年06月30日 初步完成模态分析显示振形功能

第一版的最初定位仅仅是作为模型可视化工具在开发,整体架构均围绕代码解析展开,这也是导致后期难以拓展继续开发的原因。后处理功能也仅仅完成位移可视化,现已将该版本完全开源。

代码及可执行文件下载地址:http://oslite.tech

2.2 新版OSLite

2020年6月启动新版本开发工作,开发该版本之前,本人花了两个月时间学习软件架构设计、阅读了一些优秀开源软件的代码。

目前该版本的开发在持续进行中,截止2022年4月1号,OSLite包含207个代码文件,41286行代码。完成46种常见单轴材料、22种多轴材料、44种单元的OpenSees代码解析和可视化操作。

3. OSLite目标理念

目前市场上主流的商业结构有限元软件各有各的优点,但也或多或少都存在一些问题。软件工程师始终不是结构工程师,工作性质的不同带来了思维方式的不同,只有结构工程师知道结构工程师需要的是什么。新版本开发的目标是完成一款以OpenSees为计算内核的全功能结构通用有限元软件,并为其他内核求解器预留接口。OSLite的目标并不是取代其他软件,也不为与其他同类软件竞争,仅仅是为了解决一些痛点,提供多一种选择。

OSLite开发过程中借鉴了许多其他我认为非常优秀的软件设计(不仅仅是有限元软件),例如Midas Civil的结构树、AutoCAD的命令行和属性面板、SAP2000的简洁界面等等。

OSLite的操作逻辑遵循软件开发的KISS原则和奥卡姆剃刀定律。

KISS 是英文 Keep it Simple and Stupid 首字母的缩写,意思是“保持简单和愚蠢”,设计越简单越好,任何没有必要的复杂都是需要避免的。任何功能的设计均努力缩短需要的操作步骤,类似苹果iOS系统的设计,屏幕操作尽可能的在三次以内达到想要的功能。

奥卡姆剃刀定律(Occam’s Razor, Ockham’s Razor)的原则是“如无必要,勿增实体” (Entities should not be multiplied unnecessarily)。对于该定律最明显的反例就是Midas Civil,该软件相同的功能均可以在多个位置找到,例如定义属性功能,可以同时使用右键菜单、结构树、以及Ribbon选项卡。OSLite尽可能的回避这样的设计。

4. 前处理功能

软件图形界面包含菜单栏、常用工具栏、单元绘制工具栏、结构树、模型可视化区、命令行、属性面板等几个区域。

4.1 材料定义功能

在“定义”菜单下选择材料,然后在“选择材料类型”对话框通过下拉列表选择材料种类进行编辑添加。也可在结构树中通过右键菜单添加材料。

4.2 属性编辑功能

在结构树中选择要编辑的属性,右键菜单中选择编辑功能。

4.3 单元绘制功能

从“绘制”菜单或者左侧“单元绘制工具栏”选择要绘制的单元类型,在右侧的属性面板中设置好材料类型等单元属性,根据命令行提示进行绘制。

目前软件的图形化操作功能,在界面、操作习惯等方面尽可能的结合Sap2000、Midas Civil以及AutoCAD等工程师常用软件。截止2022年4月1号,已经对OpenSees所支持的材料、单元全部实现图形化接口设计。

4.4 命令行操作

OSLite的命令行是一个借鉴AutoCAD命令行的设计。命令行功能是用户与软件之间进行交互的一种非常高效的方式。交互的含义是“输出”和“输入”,该功能区是信息输出窗口和命令输入窗口公用的设计。目前软件支持的命令如下:

4.4.1.定义属性

简写命令 完整命令 描述
dof definedof 定义模型自由度
dum defineunimaterials 定义单轴材料
dnm definendmaterials 定义多轴材料
dsc1 definesection1 定义一维单元截面
dsc2 definesection2 定义面截面

4.4.2.绘制节点单元

简写命令 完整命令 描述
pt points 绘制点
ze zero 绘制零长度单元
tr truss 绘制桁架单元
bc beamcolumn 绘制梁柱单元
li link 绘制连接单元
be bearing 绘制支座单元
qu4 quad4 绘制4节点面单元
qu9 quad9 绘制9节点面单元
tri triangular 绘制3节点面单元
br8 brick8 绘制8节点体单元
br20 brick20 绘制20节点体单元
tet tetrahedron 绘制四面体单元
up4 u_p4 绘制4节点压力-应变单元
up8 u_p8 绘制8节点压力-应变单元
up9 u_p9 绘制9节点压力-应变单元
up20 u_p20 绘制20节点压力-应变单元
ca cable 绘制索单元

4.4.3.模型编辑

简写命令 完整命令 描述
ed edit 编辑单元
e erase 删除选择的节点单元
co copy 复制选择的节点单元
ro rotate 旋转复制选择的节点单元
mi mirror 镜像选择的节点单元
div divide 分割选择的“线”单元
res restraints 指定节点边界

4.4.4.切换视图

简写命令 完整命令 描述
xyz viewxyz 切换至XYZ视图
xy viewxy 切换至XY视图
xz viewxz 切换至XZ视图
yz viewyz 切换至YZ视图
zr zoomredraw 刷新
zw zoomwindow 窗口缩放
za zoomauto 自动缩放

4.4.5.其他

简写命令 完整命令 描述
op option 系统配置

命令功能会随着软件的持续开发继续增加,今后会进行分类完善。

5.后处理功能

近期正在移植OSLite老版本中后处理相关功能代码至新版本。

6.目前对OpenSees代码的支持

OSLite自带了TCL求解器,所以导入的代码可以是任意合法的TCL代码。OpenSees脚本本身是TCL脚本的拓展应用,对于材料、截面、单元等都是以拓展关键字的方式实现。

由于OpenSees是开源软件,且作为开放平台对全世界开放,各个团队均对OpenSees贡献了单元、材料本构代码。目前的OpenSees材料库、单元库非常庞大,故在OSLite开发之初并不采用逐一解析的方式来支持OpenSees代码,转而采用递归算法+栈数据结构实现平衡括号算法来解析OpenSees语法,将一种材料/单元的语法解析简化为一行括号表达式的编辑工作。

6.1 材料

目前OSLite所支持的OpenSees材料关键字列表如下:

| 单轴材料 | 关键字 | 导入 | 编辑 |
| :——————————————- | ——————————- | —- | —- |
| 钢筋 | | | |
| Steel01 Material | Steel01 | OK | OK |
| Steel02 Material | Steel02 | OK | OK |
| Steel4 Material | Steel4 | OK | OK |
| Hysteretic Material | Hysteretic | OK | OK |
| Reinforcing Steel Material | ReinforcingSteel | OK | OK |
| Dodd Restrepo | Dodd_Restrepo | OK | OK |
| RambergOsgoodSteel Material | RambergOsgood | OK | OK |
| SteelMPF | SteelMPF | OK | OK |
| UVCuniaxial | UVCuniaxial | OK | OK |
| 混凝土 | | | |
| Concrete01 Material | Concrete01 | OK | OK |
| Concrete02 Material | Concrete02 | OK | OK |
| Concrete04 Material | Concrete04 | OK | OK |
| Concrete06 Material | Concrete06 | OK | OK |
| Concrete07 | Concrete07 | OK | OK |
| Concrete01 Material With Stuff in the Cracks | Concrete01WithSITC | OK | OK |
| ConfinedConcrete01 Material | FRPConfinedConcrete | | |
| ConcreteD | ConcreteD | OK | OK |
| FRPConfinedConcrete | | OK | OK |
| ConcreteCM | ConcreteCM | OK | OK |
| 常规材料 | | | |
| Elastic Uniaxial Material | Elastic | OK | OK |
| Elastic-Perfectly Plastic Material | ElasticPP | OK | OK |
| Elastic-Perfectly Plastic Gap Material | ElasticPPGap | OK | OK |
| Elastic-No Tension Material | ENT | OK | OK |
| Parallel Material | Parallel | OK | OK |
| Series Material | Series | OK | OK |
| 其他 | | | |
| CastFuse Material | Cast
CastFuse | OK | OK |
| ViscousDamper Material | ViscousDamper | OK | OK |
| BilinearOilDamper Material | BilinearOilDamper | OK | OK |
| Bilin Material | | | |
| ModIMKPeakOriented Material | | | |
| ModIMKPinching Material | | | |
| SAWS Material | SAWSMaterial
SAWS | OK | OK |
| BARSLIP Material | BarSlip | OK | OK |
| Bond_SP01 | Bond_SP01
Bond | OK | OK |
| Fatigue Material | Fatigue | OK | OK |
| Hardening Material | Hardening
Hardening2 | OK | OK |
| Impact Material | ImpactMaterial
Impact | OK | OK |
| Hyperbolic Gap Material | HyperbolicGapMaterial | OK | OK |
| Limit State Material | | | |
| MinMax Material | MinMaxMaterial
MinMax | OK | OK |
| ElasticBilin Material | ElasticBilin
ElasticBilinear | OK | OK |
| ElasticMultiLinear Material | ElasticMultiLinear | OK | OK |
| MultiLinear Material | MultiLinear | OK | OK |
| Initial Strain Material | InitStrainMaterial
InitStrain | OK | OK |
| Initial Stress Material | InitStressMaterial
InitStress | OK | OK |
| PathIndependent Material | | | |
| Pinching4 Material | Pinching4 | OK | OK |
| Engineered Cementitious Composites Material | ECC01 | OK | OK |
| SelfCentering Material | SelfCentering | OK | OK |
| Viscous Material | Viscous | OK | OK |
| BoucWen Material | BoucWen | OK | OK |
| BWBN Material | BWBN | OK | OK |
| PySimple1 Material | | | |
| TzSimple1 Material | | | |
| QzSimple1 Material | | | |
| PyLiq1 Material | | | |
| TzLiq1 Material | | | |
| PySimple1Gen Command | | | |
| TzSimple1Gen Command | | | |
| KikuchiAikenHDR Material | | | |
| KikuchiAikenLRB Material | | | |
| AxialSp Material | | | |
| AxialSpHD Material | | | |
| Pinching Limit State Material | | | |
| CFSWSWP | | | |
| CFSSSWP | | | |

| 多轴材料 | 关键字 | 导入 | 编辑 |
| :————————————— | ——————————————– | —- | —- |
| Elastic Isotropic Material | ElasticIsotropic | OK | OK |
| Elastic Orthotropic Material | ElasticOrthotropic3D
ElasticOrthotropic | OK | OK |
| J2 Plasticity Material | J2Plasticity
J2 | OK | OK |
| Drucker Prager Material | DruckerPrager | OK | OK |
| Concrete Damage Model | | | |
| Plane Stress Material | PlaneStressMaterial
PlaneStress | OK | OK |
| Plane Strain Material | PlaneStrainMaterial
PlaneStrain | OK | OK |
| Multi Axial Cyclic Plasticity | | | |
| Bounding Surface Cam Clay Material | BoundingCamClay | OK | OK |
| Plate Fiber Material | PlateFiberMaterial
PlateFiber | OK | OK |
| Plane Stress Concrete Materials | | | |
| FSAM – 2D RC Panel Constitutive Behavior | FSAM | OK | OK |
| CycLiqCP Material | CycLiqCP | OK | OK |
| CycLiqCPSP Material | CycLiqCPSP | OK | OK |
| Manzari Dafalias Material | ManzariDafalias | OK | OK |
| J2CyclicBoundingSurface Material | J2CyclicBoundingSurface | OK | OK |
| PM4Sand Material | PM4Sand | OK | OK |
| PM4Silt Material (Beta) | PM4Silt | OK | OK |
| Stress Density Material | stressDensity
StressDensity | OK | OK |
| PlaneStressUserMaterial | | | |
| PlateFromPlaneStress | | | |
| PlateRebar | | | |
| LayeredShell | | | |
| ContactMaterial2D | ContactMaterial2D | OK | OK |
| ContactMaterial3D | ContactMaterial3D | OK | OK |
| InitialStateAnalysisWrapper | InitialStateAnalysisWrapper | OK | OK |
| PressureIndependMultiYield Material | | | |
| PressureDependMultiYield Material | | | |
| PressureDependMultiYield02 Material | | | |
| PressureDependMultiYield03 Material | | | |
| FluidSolidPorousMaterial | | | |
| AcousticMedium | AcousticMedium | OK | OK |
| UVCmultiaxial | UVCmultiaxial | OK | OK |
| UVCplanestress | UVCplanestress | OK | OK |

6.2 截面

目前OSLite所支持的OpenSees截面关键字列表如下:

| 截面类型 | 关键字 | 导入 | 编辑 |
| —————————— | ————————————– | —- | —- |
| Elastic Section | Elastic | OK | |
| Fiber Section | Fiber
fiberSec | | |
| NDFiber Section | NDFiberWarping
NDFiber | | |
| Wide Flange Section | WFSection2d
WSection2d | OK | |
| RC Section | RCSection2d | OK | |
| Parallel Section | | | |
| Section Aggregator | Aggregator
AddDeformation | OK | |
| Uniaxial Section | Generic1D
Generic1d
Uniaxial | | |
| Elastic Membrane Plate Section | ElasticMembranePlateSection | | |
| Plate Fiber Section | PlateFiber | | |
| Bidirectional Section | Bidirectional | | |
| Isolator2spring Section | Iso2spring | | |

6.3 单元

目前OSLite所支持的OpenSees单元关键字列表如下:

| 单元类型 | 关键字 | 导入 | 编辑 |
| ——- | —— | — | —- |
| 零长度单元 | | | |
| zeroLength Element | zeroLength | OK | OK |
| zeroLengthND Element | zeroLengthND | OK | OK |
| zeroLengthSection Element | zeroLengthSection | OK | OK |
| CoupledZeroLength Element | CoupledZeroLength
ZeroLengthCoupled | OK | OK |
| zeroLengthContact Element | | | |
| zeroLengthContactNTS2D | | | |
| zeroLengthInterface2D | | | |
| zeroLengthImpact3D | | | |
| 桁架单元 | | | |
| Truss Element | truss
Truss
trussSection
TrussSection | OK | OK |
| Corotational Truss Element | corotTruss
CorotTruss
corotTrussSection
corotTrussSection | OK | OK |
| 梁柱单元 | | | |
| Elastic Beam Column Element | elasticBeamColumn
elasticBeam | OK | OK |
| Elastic Beam Column Element with Stiffness Modifiers | ModElasticBeam2d
modElasticBeam2d | OK | OK |
| Elastic Timoshenko Beam Column Element | ElasticTimoshenkoBeam
elasticTimoshenkoBeam | OK | OK |
| Beam With Hinges Element | forceBeamColumn
beamWithHinges | OK | OK |
| Displacement-Based Beam-Column Element | dispBeamColumn | OK | OK |
| Force-Based Beam-Column Element | forceBeamColumn
timoshenkoBeamColumn
forceBeamColumnCBDI
forceBeamColumnCSBDI
forceBeamColumnWarping
forceBeamColumnThermal
elasticForceBeamColumnWarping
dispBeamColumnNL
dispBeamColumnThermal
elasticForceBeamColumn
nonlinearBeamColumn
dispBeamColumnWithSensitivity | OK | OK |
| Flexure-Shear Interaction Displacement-Based Beam-Column Element | dispBeamColumnInt | OK | OK |
| MVLEM – Multiple-Vertical-Line-Element-Model for RC Walls | | | |
| SFI_MVLEM – Cyclic Shear-Flexure Interaction Model for RC Walls | | | |
| 节点单元 | | | |
| BeamColumnJoint Element | beamColumnJoint | OK | |
| ElasticTubularJoint Element | elasticTubularJoint
ElasticTubularJoint | OK | |
| Joint2D Element | Joint2D
Joint2d | OK | |
| 连接单元 | | | |
| Two Node Link Element | twoNodeLink | OK | OK |
| 支座单元 | | | |
| Elastomeric Bearing (Plasticity) Element | | | |
| Elastomeric Bearing (Bouc-Wen) Element | | | |
| Flat Slider Bearing Element | | | |
| Single Friction Pendulum Bearing Element | | | |
| TFP Bearing | | | |
| Triple Friction Pendulum Element | | | |
| MultipleShearSpring Element | | | |
| KikuchiBearing Element | | | |
| YamamotoBiaxialHDR Element | | | |
| ElastomericX | | | |
| LeadRubberX | | | |
| HDR | | | |
| RJ-Watson EQS Bearing Element | | | |
| FPBearingPTV | | | |
| 四节点面单元 | | | |
| Quad Element | quad
stdQuad
quadWithSensitivity | OK | OK |
| Shell Element | shell
shellMITC4
Shell
ShellMITC4 | OK | OK |
| ShellDKGQ | shellDKGQ
ShellDKGQ | OK | OK |
| ShellNLDKGQ | shellNLDKGQ
ShellNLDKGQ | OK | OK |
| ShellNL | shellNL
ShellNL
shellMITC9
ShellMITC9 | OK | OK |
| Bbar Plane Strain Quadrilateral Element | bbarQuad
mixedQuad | OK | OK |
| Enhanced Strain Quadrilateral Element | enhancedQuad | OK | OK |
| SSPquad Element | SSPquad
SSPQuad | OK | OK |
| 三节点面单元 | | | |
| Tri31 Element | tri31
Tri31 | OK | OK |
| ShellDKGT | shellDKGT
ShellDKGT | OK | OK |
| ShellNLDKGT | shellNLDKGT
ShellNLDKGT | OK | OK |
| 实体单元 | | | |
| Standard Brick Element | stdBrick | OK | OK |
| Bbar Brick Element | bbarBrick | OK | OK |
| bbarBrickWithSensitivity Element | bbarBrickWithSensitivity | OK | OK |
| flBrick Element | flBrick | OK | OK |
| Twenty Node Brick Element | 20NodeBrick | OK | OK |
| Twenty Seven Node Brick Element | | | |
| SSPbrick Element | SSPbrick | OK | OK |
| 四面体单元 | | | |
| FourNodeTetrahedron | FourNodeTetrahedron | OK | OK |
| 压力-应变单元 | | | |
| Four Node Quad u-p Element | quadUP | OK | OK |
| Brick u-p Element | brickUP | OK | OK |
| bbarQuad u-p Element | bbarQuadUP | OK | OK |
| bbarBrick u-p Element | bbarBrickUP | OK | OK |
| Nine Four Node Quad u-p Element | 9_4_QuadUP | OK | OK |
| Twenty Eight Node Brick u-p Element | 20_8_BrickUP | OK | OK |
| Twenty Node Brick u-p Element | | | |
| Brick Large Displacement u-p Element | | | |
| SSPquadUP Element | SSPquadUP
SSPQuadUP | OK | OK |
| SSPbrickUP Element | SSPbrick
SSPBrickUP | OK | OK |
| 其他单元 | | | |
| ShallowFoundationGen | | | |
| SurfaceLoad Element | | | |
| VS3D4 | | | |
| AC3D8 | | | |
| ASI3D8 | | | |
| AV3D4 | | | |
| 接触单元 | | | |
| SimpleContact2D Element | | | |
| SimpleContact3D Element | | | |
| BeamContact2D Element | | | |
| BeamContact3D Element | | | |
| BeamEndContact3D Element | | | |
| zeroLengthImpact3D | | | |
| 索单元 | | | |
| CatenaryCable Element | CatenaryCable | OK | OK |

7. OSlite所用到的开源库及开源协议介绍

7.1 QT界面库

Qt 是一个1991年由Qt Company开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。Qt是面向对象的框架,使用特殊的代码生成扩展(称为元对象编译器(Meta Object Compiler, moc))以及一些宏,Qt很容易扩展,并且允许真正地组件编程。

QT库目前包含三种授权方式,商业授权、开源 GPL 协议、开源LGPL 协议。

对这两种开源协议,简单来说,使用 GPL 版本的软件一定还是 GPL 的开源软件,无论是使用了 Qt 的程序代码还是修改了 Qt 库代码,都必须按照 GPL 来发布,这是 GPL 的传染性。

GPL 是什么都要开源,这对商业软件应用是不利的,所以QT增加了 LGPL 授权 (第一个 L 可以叫 Lesser 宽松版或 Library 开发库版)。使用 LGPL 授权就可以利用 Qt 官方动态链接库,而不必开放商业代码。只要不修改和定制 Qt 库,仅使用 Qt 官方发布的动态链接库就可以不开源,这是商业友好的授权模式。

7.2 VTK可视化库

可视化工具库VTK(Visualization Toolkit)是一个开放源代码,跨平台、支持平行处理的图形应用库。

VTK 利用了面向对象的技术,它包括C++类库,及Tcl/TK、Java、Python 等一些解释型界面层。其图形模型建立在比OpenGL 更高层基础之上,所有的函数都封装在700 多个类库中。VTK 不仅支持对几何体的显示及渲染,还同时支持许多图形及可视化算法(矢量、标量、张量)及高级的建模技术(快速建模、多边形优化、Delaunay 三角形片生成法)。同时,VTK将图形图像算法直接集成,将2D/3D 图形图像的算法和数据融合起来。

VTK可视化库采用开源BSD协议。BSD开源协议是一个给于使用者很大自由的协议。基本上使用者可以”为所欲为”,可以自由 的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。但”为所欲为”的前提当你发布使用了BSD协议的代码,或则以BSD协议代码为基础做二次开 发自己的产品时,需要满足三个条件:

如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的BSD协议。如果再发布的只是二进制类库/软件,则需要在类库/软件的文档和版权声明中包含原来代码中的BSD协议。

不可以用开源代码的作者/机构名字和原来产品的名字做市场推广。

BSD代码鼓励代码共享,但需要尊重代码作者的著作权。BSD由于允许使用者修改和重新发布 代码,也允许使用或在BSD代码上开发商业软件发布和销售,因此是对商业集成很友好的协议。而 很多的公司企业在选用开源产品的时候都首选BSD协议,因为可以完全控制这些第三方的代码,在 必要的时候可以修改或者二次开发。

7.3 wxWidgets界面库

wxWidgets是一个开放源代码且跨平台的对象工具集,可用来创建基本的图形用户界面(GUI)。wxWidgets由Julian Smart于1992年首先开发。

使用wxWidgets库所开发的软件只需要对源代码做少量更改(或者完全不用更改),就能在各种不同的作业平台上编译并运行。目前可支持Windows、Apple Macintosh、Linux/Unix、OpenVMS、以及OS/2。wxWidgets本身使用C++语言开发,但也有其它不同编程语言的绑扎,例如:Python(wxPython)、Lua(wxlua)、Perl(wxPerl)、Ruby(wxRuby)、Smalltalk(wxSmalltalk)、Java(wx4j)、甚至是JavaScript(wxjs)等。