wxLua 有多简单?其实不简单。因为调用 wxWidgets 本身就是件麻烦事。但是语言的力量是巨大的。我在 lua 下编写了一套名为 wxe (Lua wxWidgets Extension) 的库,调用这个库,我大大简化了 Lua 下的 GUI 编程。下面是一个例子:
编写这样的界面只需要不到 30 行代码(连空白行也算进去):
require "wxe" frame = wxe.Frame("练习菜单栏", 600, 300) frame:CreateStatusBar(1); frame:SetMenuBar(wxe.MenuBar{{ title="文件(&F)", menu={{ title="打开(&O)\tCtrl-O", info="打开指定的文件" },{ title="文件另存为(&A)...\tCtrl-Shift-A", info="保存文件到另外的位置" },"-",{ title="你的性别(&G)", info="选择你的性别", menu={{ title="男(&M)", info="你不是女的" },{ title="女(&F)", info="你不是男的" }} }}} }) frame:Show(true)
这样的效率可以说是相当高了。但令人遗憾的是因为 Lua 并非面向对象的语言,所以很多地方写起来不是很顺手。比如我想给创建的控件添加自定义的方法,以省掉一些参数。这在 Lua 下就做不到。我现在又把目光瞄向了 wxJS。JavaScript 是我最喜欢的语言了。