当前位置: 首页 > 软件库 > 程序开发 > GUI开发框架 >

LTUI

基于 Lua 的跨平台字符终端 UI 界面库
授权协议 Apache-2.0
开发语言 Lua
所属分类 程序开发、 GUI开发框架
软件类型 开源软件
地区 国产
投 递 者 鲁俊友
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

简介

LTUI是一个基于lua的跨平台字符终端UI界面库。

此框架源于xmake中图形化菜单配置的需求,类似linux kernel的menuconf去配置编译参数,因此基于curses和lua实现了一整套跨平台的字符终端ui库。 而样式风格基本上完全参照的kconfig-frontends,当然用户也可以自己定制不同的ui风格。

安装

$ luarocks install ltui

编译

我们需要先安装跨平台构建工具:xmake

$ xmake

运行测试

你需要先安装lua或者luajit程序去加载运行测试程序:

$ xmake run test dialog
$ xmake run test window
$ xmake run test desktop
$ xmake run test inputdialog
$ xmake run test mconfdialog

或者

$ lua tests\dialog.lua
$ lua tests\window.lua
$ lua tests\desktop.lua
$ lua tests\inputdialog.lua
$ lua tests\mconfdialog.lua

或者

$ luajit tests\dialog.lua
$ luajit tests\window.lua
$ luajit tests\desktop.lua
$ luajit tests\inputdialog.lua
$ luajit tests\mconfdialog.lua

例子

应用程序

local ltui        = require("ltui")
local application = ltui.application
local event       = ltui.event
local rect        = ltui.rect
local window      = ltui.window
local demo        = application()

function demo:init()
    application.init(self, "demo")
    self:background_set("blue")
    self:insert(window:new("window.main", rect {1, 1, self:width() - 1, self:height() - 1}, "main window", true))
end

demo:run()

标签

local lab = label:new("title", rect {0, 0, 12, 1}, "hello ltui!"):textattr_set("white")

按钮

local btn = button:new("yes", rect {0, 1, 7, 2}, "< Yes >"):textattr_set("white")

输入框

function demo:init()
    -- ...

    local dialog_input = inputdialog:new("dialog.input", rect {0, 0, 50, 8})
    dialog_input:text():text_set("please input text:")
    dialog_input:button_add("no", "< No >", function (v) dialog_input:quit() end)
    dialog_input:button_add("yes", "< Yes >", function (v) dialog_input:quit() end)
    self:insert(dialog_input, {centerx = true, centery = true})
end

组件

视图 对话框 其他
view dialog event
panel boxdialog action
label textdialog canvas
button inputdialog curses
border mconfdialog program
window choicedialog application
menubar   point
menuconf   rect
textedit   object
textarea    
statusbar    
choicebox    
desktop    

快照

菜单配置

输入框

文本区域

如果你想了解更多,请参考:

 相关资料
  • 多平台支持 Mpx支持在多个小程序平台中进行增强,目前支持的小程序平台包括微信,支付宝,百度,qq和头条,不过自2.0版本后,Mpx支持了以微信增强语法为base的跨平台输出,实现了一套业务源码在多端输出运行的能力,大大提升了多小程序平台业务的开发效率,详情可以查看template增强特性 不同平台上的模板增强指令按照平台的指令风格进行设计,文档和代码示例为了方便统一采用微信小程序下的书写方式。

  • 问题内容: 我已经读过,例如在读取文本文件并将文本导入数组等时使用平台默认字符编码是一个坏主意。您能否解释一下这将如何影响跨平台性能,以及如何解决该问题?是否有用于跨平台应用程序的编码?谢谢 问题答案: 这与性能无关,而是与显示和阅读正确编码的文本有关。有很多方法可以解决该问题: 设置JVM选项 始终使用字符编码参数重载的方法。这些都对那些,,等等。 我认为后者是必须的。如果始终设置jvm选项,它

  • 问题内容: 我一直在研究基于SWT的项目,该项目旨在作为Java Web Start部署,因此可以在多个平台上使用。 到目前为止,我已经设法解决了由于SWT依赖于系统特定的库而引起的导出问题。生成的jar似乎可以在32/64位linux和64位Windows上正常运行,但是在Mac上执行失败,输出如下: 据我了解,该问题源于Mac OSX上的线程处理,因此我应该尝试在执行时实现JVM参数。这是正确

  • 问题内容: 我想建立一个可以产生MIDI声音的小型应用程序。我从来没有在编程中处理过声音,所以我想从基本的东西开始,并拥有良好的文档。我想坚持使用Python,因为我最熟悉它,并且一开始不想让自己不知所措。 在Windows和Ubuntu之间,我的时间大约是50/50,因此在两个平台上都能“正常工作”的事情确实很有帮助。 有什么建议? 问题答案: MIDIUtil库(在Google Code的此处

  • 我需要在我的应用程序中为不同的标签指定不同的FontFamily。我需要使用默认字体(如Android的Roboto和iOS的Helvetica)及其修改(如轻、中、粗)。据我所知,我应该使用Roboto-Light和Helvetica-Light来获得字体的轻版本(中号和粗体相同)。除了这个需求之外,我还需要在XAML中设置字体(如文档中所描述的),所以我最终得到了以下代码 然而,在Androi

  • 作为第三代数据统计和分析平台,诸葛实现了对用户的实名(实账号)分析,并主张互联网产品分析以用户为中心的分析思想并提供了一系列方法论。对用户的唯一标识来源于企业自身数据库对用户的唯一识别符,也即诸葛底层数据采集是以用户为中心的采集,我们提供了跨平台分析版本, 满足企业以用户为中心的整体的分析需求,不同平台相同业务价值下的用户完整的故事解读(例如:分析电商的用户在PC端浏览产品,在移动端支付的转化率)

  • 说明 由于在跨端开发中,必不可少的会遇到不同端需要有不同实现的情况。参考滴滴chameleon中的多态,megalo中实现了类似的跨平台兼容方案。需要使用时,请保证@megalo/target的版本号大于或等于0.7.2。 js的跨平台兼容 megalo中下面两种形式的引用会被特殊处理: [path-to-name]/[name]/index.mpjs [path-to-name]/[name]

  • 问题内容: 我想开发一个跨平台的应用程序。 Java是跨平台的吗?我的意思是,我可以在Windows中开发Java应用程序并在Mac OS X和Linux中使用它吗? 如果是,怎么办? 我发现用Java编写的应用程序有两个安装文件,一个用于Windows,另一个用于Mac。 这使我感到困惑。 任何插图或建议将不胜感激。 问题答案: Java是跨平台的吗? 从某种意义上说,Java是跨平台的, 即已