跳转至

exeasyUI

作者:江访

一、概述

exEasyUI 是整合 LuatOS 中 lcd 核心库和 tp 触摸库而打造的简化 UI 组件库,内置了组件管理、页面渲染与触摸事件分发功能。

主要特性

  • 组件丰富:内置 Button、Label、ProgressBar、MessageBox、Picture、CheckBox、Window 等核心组件
  • 开发高效:用更少代码快速搭建可量产的触控界面,内置触摸/渲染/组件与示例
  • 验证便捷:提供 LuatOS PC 模拟器快速验证效果,无需等待烧录
  • 效果一致:PC 模拟器呈现的功能效果与设备上运行的效果一致
  • 持续更新:更多组件持续更新中,当前版本为:V1.6.2,点击下载 exEasyUI 演示 demo 可进行模拟体验

注意事项

  • exeasyui 为扩展库,没有内置到 LuatOS 内核固件中,真实设备需要把 exeasyui、screen_data_table、extp、exlcd 文件同其他脚本文件一同烧录到设备中才能确保 exeasyui 扩展库正常运行;
  • 正因为 exeasyui 没有内置到 LuatOS 内核固件中,使用时需要 require("exeasyui")加载后才能正常调用 exeasyui 的功能;

  • 如果以 require("exeasyui")形式引入 exeasyui 扩展库,那么调用代码时需要把下方示例中的 ui.xxx 改成 exeasyui.xxx;

  • 如果同示例代码一样以 ui = require("exeasyui")形式引入 exeasyui 扩展库,,那么就能按照参考示例 demo 一样,把接口的使用写成 ui.xxx;
  • exeasyui 默认使用的是 12 号中文字体,Air780EPM 不支持 12 号中文字体,使用会没有中文显示。

二、核心示例

1、核心示例是指:使用本库文件提供的核心 API,开发的基础业务逻辑的演示代码;

2、核心示例的作用是:帮助开发者快速理解如何使用本库,所以核心示例的逻辑都比较简单;

3、更加完整和详细的 demo,请参考 LuatOS 仓库 中各个产品目录下的 demo/exeayui

2.1 核心代码

以下示例演示:创建一个窗口,开启纵向滚动,将各个组件的最小可用示例纵向排布,滑动浏览。

PROJECT = "exEasyUI_demo"
VERSION = "1.0.0"

sys = require("sys")
local ui = require("exeasyui")

sys.taskInit(function()
    sys.wait(500)
    -- 依赖 screen_data_table.lua 内的 lcdargs/touch 参数
    ui.hw.init({})
    ui.init({ theme = "light" })

    local win = ui.Window({ backgroundColor = ui.COLOR_WHITE })
    -- 内容高度较大,启用纵向滚动
    win:enableScroll({ direction = "vertical", contentHeight = 1000, threshold = 8 })

    local y = 20
    local function place(h)
        local cur = y; y = y + h + 16; return cur
    end

    -- 1) Button
    local btn = ui.Button({ x = 20, y = place(44), w = 280, h = 44, text = "Button", onClick = function(self)
        log.info("demo", "button clicked")
    end })
    win:add(btn)

    -- 2) Toggle按钮(v1.6.0:Button支持toggle功能)
    local tb = ui.Button({ x = 20, y = place(64), w = 64, h = 64, 
        src = "/luadb/icon.jpg", toggle = true, 
        onToggle = function(t) log.info("demo", "toggled", t) end 
    })
    win:add(tb)

    -- 3) CheckBox
    local cb = ui.CheckBox({ x = 20, y = place(24), text = "Check me", checked = false, onChange = function(v)
        log.info("demo", "checkbox", v)
    end })
    win:add(cb)

    -- 4) Label(v1.6.0:支持自动换行)
    local lbl = ui.Label({ x = 20, y = place(60), w = 280, wordWrap = true,
        text = "This is a long text that will wrap automatically within the specified width." })
    win:add(lbl)

    -- 5) Picture(示例:无实际图片时会显示占位框)
    local pic = ui.Picture({ x = 20, y = place(120), w = 160, h = 120, autoplay = false, src = "/luadb/sample.jpg" })
    win:add(pic)

    -- 6) MessageBox(作为静态面板展示)
    local box = ui.MessageBox({ x = 20, y = place(120), w = 280, h = 120, title = "MessageBox", message = "Info Panel", buttons = {"OK"}, onResult = function(r)
        log.info("demo", "msgbox", r)
    end })
    win:add(box)

    -- 7) ProgressBar
    local pb = ui.ProgressBar({ x = 20, y = place(26), w = 280, h = 26, progress = 35, text = "35%" })
    win:add(pb)

    ui.add(win)

    while true do
        ui.clear()
        ui.render()
        sys.wait(30)
    end
end)

sys.run()

2.2 演示环境搭建

2.2.1 演示代码和 PC 模拟器下载链接

当前版本为:V1.6.2,点击下载 exEasyUI 演示 demo 可进行模拟体验

2.2.2 演示文件说明

  1. cmd 启动 LuatOS PC 模拟器的快捷键;
  2. luatos-lua.exe,LuatOS PC 模拟器;
  3. lib 文件夹,exEasyUI 库文件,无需修改;
  4. 各 demo 文件夹,演示的 demo 文件,其中 main.lua 为主程序;

2.2.3 演示步骤

  1. 双击 cmd 快捷键运行 LuatOS PC 模拟器;
  2. 把代码下方 PC 模拟器快捷命令复制到 LuatOS PC 模拟器里面
  3. 按回车运行 LuatOS PC 模拟器和 demo 代码
  4. 退出 pc 模拟器运行的代码,使用快捷键 ctrl+c
  5. 查看 pc 模拟器历史运行的 PC 模拟器快捷命令,使用快捷键 ↑

2.3 组件效果及其 demo

2.3.1 Window(窗口容器)+Label(文本)静态方式

2.3.1.1 演示效果

默认使用12号中文字体认
文本内容动态变化
可设置颜色
使用gtfont字库可设置字体大小
黑色/白色,跟随主题
时间:19:30:20

时间:19:30:20
时间:19:30:20

2.3.1.2 演示代码

PROJECT = "exEasyUI_demo"
VERSION = "1.0.0"

sys = require("sys")
local ui = require("exeasyui")

local function exEasyUI_demo()
    sys.wait(500)

    -- 显示触摸初始化
    ui.hw.init({})

    -- 设置主题
    ui.init({ theme = "light" })

    -- 创建Window(窗口容器),设置背景为白色,命名为page1
    local page1 = ui.Window({ backgroundColor = ui.COLOR_WHITE })

    -- 创建Label(文本)组件,在(20,20)位置显示"hello exEasyUI",命名为lbl
    lbl = ui.Label({ x = 20, y = 20, text = "hello exEasyUI"})

    -- 将组件lbl并注册到page1
    page1:add(lbl)

    -- 将page1注册到ui
    ui.add(page1)

    -- 显示主循环
    while true do
        -- 清除显示
        ui.clear()
        -- 更新时间给文本组件lbl
        lbl:setText("时间:"..os.date("%Y-%m-%d %H:%M:%S"))           
        -- 刷新显示
        ui.render()
        -- 等待30ms
        sys.wait(30)
    end

end

sys.taskInit(exEasyUI_demo)

sys.run()

2.3.1.3 PC 模拟器快捷命令

.\luatos-lua.exe .\lib\ .\demo\2.1Window+Label\

2.3.2 Window(窗口容器)+Label(文本)+ 循环刷新

2.3.2.1 演示效果


默认状态

按下反馈
默认按钮


自定义命名


2.3.2.2 演示代码

PROJECT = "exEasyUI_demo"
VERSION = "1.0.0"

sys = require("sys")
local ui = require("exeasyui")

local function exEasyUI_demo()
    sys.wait(500)

    -- 显示触摸初始化
    ui.hw.init({})

    -- 设置主题
    ui.init({ theme = "light" })

    -- 创建Window(窗口容器),设置背景为白色,命名为page1
    local page1 = ui.Window({ backgroundColor = ui.COLOR_WHITE })

    -- 创建一个Button(按钮)文本模式,显示在(20.20)位置,命名为btn1
    local btn1 = ui.Button({ x = 20, y = 20})
    page1:add(btn1)

    -- 将page1注册到ui
    ui.add(page1)

    -- 显示主循环
    while true do
        -- 清除显示
        ui.clear()
        -- 刷新显示
        ui.render()
        -- 等待30ms
        sys.wait(30) 
    end
end

sys.taskInit(exEasyUI_demo)

sys.run()

2.3.3 PC 模拟器快捷命令

.\luatos-lua.exe .\lib\ .\demo\2.3Window+Button\

2.3.4 Window(窗口容器)+ Button(按钮)图标模式

2.3.4.1 演示效果

设置默认图标


设置点击后图标

2.3.4.2 演示代码

PROJECT = "exEasyUI_demo"
VERSION = "1.0.0"

sys = require("sys")
local ui = require("exeasyui")

local function exEasyUI_demo()
    sys.wait(500)

    -- 显示触摸初始化
    ui.hw.init({})

    -- 设置主题
    ui.init({ theme = "light" })

    -- 创建Window(窗口容器),设置背景为白色,命名为page1
    local page1 = ui.Window({ backgroundColor = ui.COLOR_WHITE })

    -- 创建一个Button(按钮)图标模式,显示在(20.20)位置,命名为btn2,点击切换图片
    local btn2 = ui.Button({x = 20, y = 20, w = 64, h = 64,
        toggle = true,                  -- 启用切换模式
        src = "/luadb/4.jpg",           -- 默认图片
        src_toggled = "/luadb/5.jpg",   -- 切换状态时的图片
    })
    page1:add(btn2)

    -- 将page1注册到ui
    ui.add(page1)

    -- 显示主循环
    while true do
        -- 清除显示
        ui.clear()
        -- 刷新显示
        ui.render()
        -- 等待30ms
        sys.wait(30)
    end

end

sys.taskInit(exEasyUI_demo)

sys.run()

2.3.4.3 PC 模拟器快捷命令

.\luatos-lua.exe .\lib\ .\demo\2.4Window+Button\

2.3.5 Window(窗口容器)+ ProgressBar(进度条)静态方式

2.3.5.1 演示效果

默认

2.3.5.2 演示代码

PROJECT = "exEasyUI_demo"
VERSION = "1.0.0"

sys = require("sys")
local ui = require("exeasyui")

local function exEasyUI_demo()
    sys.wait(500)

    -- 显示触摸初始化
    ui.hw.init({})

    -- 设置主题
    ui.init({ theme = "light" })

    -- 创建Window(窗口容器),设置背景为白色,命名为page1
    local page1 = ui.Window({ backgroundColor = ui.COLOR_WHITE })

    -- 创建一个ProgressBar进度条,显示在(20.20)位置,命名为pb
    local pb = ui.ProgressBar({ x = 20, y = 20, w = 280, h = 26})
    -- 添加控件到page1
    page1:add(pb)

    -- 将page1注册到ui
    ui.add(page1)

    -- 显示主循环
    while true do
        -- 清除显示
        ui.clear()
        -- 刷新显示
        ui.render()
        -- 等待30ms
        sys.wait(30)
    end

end

sys.taskInit(exEasyUI_demo)

sys.run()

2.3.5.3 PC 模拟器快捷命令

.\luatos-lua.exe .\lib\ .\demo\2.5Window+ProgressBar\

2.3.6 Window(窗口容器)+ ProgressBar(进度条)动态方式

2.3.6.1 演示效果

默认

更改进度

自定义内容

2.3.6.2 演示代码

PROJECT = "exEasyUI_demo"
VERSION = "1.0.0"

sys = require("sys")
local ui = require("exeasyui")

local direction = 1 
local current = 0

local function exEasyUI_demo()
    sys.wait(500)

    -- 显示触摸初始化
    ui.hw.init({})

    -- 设置主题
    ui.init({ theme = "light" })

    -- 创建Window(窗口容器),设置背景为白色,命名为page1
    local page1 = ui.Window({ backgroundColor = ui.COLOR_WHITE })

    -- 创建一个ProgressBar进度条,显示在(20.20)位置,命名为pb
    local pb = ui.ProgressBar({ x = 20, y = 20, w = 280, h = 26})
    -- 添加控件到page1
    page1:add(pb)

    -- 将page1注册到ui
    ui.add(page1)

    -- 显示主循环
    while true do
        -- 清除显示
        ui.clear()
        -- 刷新显示
        ui.render()
        pb:setProgress(current)
        current = current + direction
        if current >= 100 then
            direction = -1
        elseif current <= 0 then
            direction = 1
        end  
        -- 等待30ms
        sys.wait(30)
    end

end

sys.taskInit(exEasyUI_demo)

sys.run()

2.3.6.3 PC 模拟器快捷命令

.\luatos-lua.exe .\lib\ .\demo\2.6Window+ProgressBar\

2.3.7 Window(窗口容器)+ MessageBox(消息面板)

2.3.7.1 演示效果

标题消息按钮

富文本消息


2.3.7.2 演示代码

PROJECT = "exEasyUI_demo"
VERSION = "1.0.0"

sys = require("sys")
local ui = require("exeasyui")

local function exEasyUI_demo()
    sys.wait(500)

    -- 显示触摸初始化
    ui.hw.init({})

    -- 设置主题
    ui.init({ theme = "light" })

    -- 创建Window(窗口容器),设置背景为白色,命名为page1
    local page1 = ui.Window({ backgroundColor = ui.COLOR_WHITE })

    -- 创建一个MessageBox(消息面板),启用自动换行,显示在(20.20)位置,命名为box
    local box = ui.MessageBox({ x = 20, y = 20, wordWrap = true,title = "通知", message = "愿你前路浩荡,未来可期.愿你保持热爱,奔赴山海。愿你所有的努力都不被辜负,最终活成自己最喜欢的模样.加油!"})
    page1:add(box)

    -- 将page1注册到ui
    ui.add(page1)

    -- 显示主循环
    while true do
        -- 清除显示
        ui.clear()
        -- 刷新显示
        ui.render()
        -- 等待30ms
        sys.wait(30)
    end

end

sys.taskInit(exEasyUI_demo)

sys.run()

2.3.7.3 PC 模拟器快捷命令

.\luatos-lua.exe .\lib\ .\demo\2.7Window+MessageBox\

2.3.8 Window(窗口容器)+ CheckBox(复选框)

2.3.8.1 演示效果

默认状态
选中状态
选中后执行程序


可选

2.3.8.2 演示代码

PROJECT = "exEasyUI_demo"
VERSION = "1.0.0"

sys = require("sys")
local ui = require("exeasyui")

local function exEasyUI_demo()
    sys.wait(500)

    -- 显示触摸初始化
    ui.hw.init({})

    -- 设置主题
    ui.init({ theme = "light" })

    -- 创建Window(窗口容器),设置背景为白色,命名为page1
    local page1 = ui.Window({ backgroundColor = ui.COLOR_WHITE })

    -- 创建一个CheckBox(复选框),显示在(20.20)位置,命名为cb
    local cb = ui.CheckBox({ x = 20, y = 20, text = "Check me"})
    page1:add(cb)

    -- 将page1注册到ui
    ui.add(page1)

    -- 显示主循环
    while true do
        -- 清除显示
        ui.clear()
        -- 刷新显示
        ui.render()
        -- 等待30ms
        sys.wait(30)
    end

end

sys.taskInit(exEasyUI_demo)

sys.run()

2.3.8.3 PC 模拟器快捷命令

.\luatos-lua.exe .\lib\ .\demo\2.8Window+CheckBox\

2.3.9 Window(窗口容器)+ Picture(图片轮播)单图模式

2.3.9.1 演示效果

未设置图片
设置了图片


2.3.9.2 演示代码

PROJECT = "exEasyUI_demo"
VERSION = "1.0.0"

sys = require("sys")
local ui = require("exeasyui")

local function exEasyUI_demo()
    sys.wait(500)

    -- 显示触摸初始化
    ui.hw.init({})

    -- 设置主题
    ui.init({ theme = "light" })

    -- 创建Window(窗口容器),设置背景为白色,命名为page1
    local page1 = ui.Window({ backgroundColor = ui.COLOR_WHITE })

    -- 创建一个 Picture(图片轮播)组件,显示在(20.20)位置,命名为pic
    local pic = ui.Picture({ x = 20, y = 20, sources = {"/luadb/1.jpg"}})
    -- 添加控件pic到page1
    page1:add(pic)

    -- 将page1注册到ui
    ui.add(page1)

    -- 显示主循环
    while true do
        -- 清除显示
        ui.clear()
        -- 刷新显示
        ui.render()
        -- 等待30ms
        sys.wait(30)
    end

end

sys.taskInit(exEasyUI_demo)

sys.run()

2.3.9.3 PC 模拟器快捷命令

.\luatos-lua.exe .\lib\ .\demo\2.9Window+Picture\

2.3.10 Window(窗口容器)+ Picture(图片轮播)轮播模式

2.3.10.1 演示效果

**列表内图片,每张按设置之间循环显示**



2.3.10.2 演示代码

PROJECT = "exEasyUI_demo"
VERSION = "1.0.0"

sys = require("sys")
local ui = require("exeasyui")

local function exEasyUI_demo()
    sys.wait(500)

    -- 显示触摸初始化
    ui.hw.init({})

    -- 设置主题
    ui.init({ theme = "light" })

    -- 创建Window(窗口容器),设置背景为白色,命名为page1
    local page1 = ui.Window({ backgroundColor = ui.COLOR_WHITE })

    -- 创建一个 Picture(图片轮播)组件,按顺序每张图片显示1.5s,显示在(20.20)位置,命名为pic
    local pic = ui.Picture({ x = 20, y = 20, sources = {"/luadb/1.jpg", "/luadb/2.jpg", "/luadb/3.jpg"}, autoplay = true, interval = 1500})
    -- 添加控件pic到page1
    page1:add(pic)

    -- 将page1注册到ui
    ui.add(page1)

    -- 显示主循环
    while true do
        -- 清除显示
        ui.clear()
        -- 刷新显示
        ui.render()
        -- 等待30ms
        sys.wait(30)
    end

end

sys.taskInit(exEasyUI_demo)

sys.run()

2.3.10.3 PC 模拟器快捷命令

.\luatos-lua.exe .\lib\ .\demo\2.10Window+Picture\

2.3.11 全部控件

2.3.11.1 演示效果



2.11.2 演示代码

PROJECT = "exEasyUI_demo"
VERSION = "1.0.0"

sys = require("sys")
local ui = require("exeasyui")

local function exEasyUI_demo()
    sys.wait(500)
    -- 依赖 screen_data_table.lua 内的 lcdargs/touch 参数
    -- 显示触摸初始化
    ui.hw.init({})

    -- 设置主题
    ui.init({ theme = "light" })

    -- 创建设置背景为白色
    local page1 = ui.Window({ backgroundColor = ui.COLOR_WHITE })

    -- 1、创建一个高度为1000像素的页面,移动超过8个像素,页面跟随
    page1:enableScroll({ direction = "vertical", contentHeight = 1000, threshold = 8 })

    -- 2、 ProgressBar进度条
    local progress = 0
    local pb = ui.ProgressBar({ x = 20, y = 170, w = 280, h = 26, progress = progress})
    -- 添加控件到page1
    page1:add(pb)

    -- 3、 MessageBox(消息框/面板)
    local box = ui.MessageBox({ x = 20, y = 160, wordWrap = true, buttons = {"接受祝福"},title = "祝福", message = "愿你前路浩荡,未来可期.愿你保持热爱,奔赴山海。愿你所有的努力都不被辜负,最终活成自己最喜欢的模样.加油!"})
    page1:add(box)
    box:hide()

    -- 4、 Button
    local btn1 = ui.Button({ x = 180, y = 76, onClick = function(self)
        progress = progress + 10  pb:setProgress(progress) pb:setText("下载中"..progress.."%")
        if progress == 100 then box:show() progress = 0 end
    end })
    page1:add(btn1)

    -- 5、 ToolButton,点击切换图片,可选执行程序
    local btn2 = ui.Button({x = 10, y = 64, w = 64, h = 64,
        src = "/luadb/4.jpg",           -- 默认图片
        src_toggled = "/luadb/5.jpg",   -- 切换状态时的图片
        toggle = true,                  -- 启用切换模式
    })
    page1:add(btn2)

    -- 6、创建一个三张图片轮播的控件,1.5s切换一张
    local pic = ui.Picture({ x = 20, y = 310,
    sources = {"/luadb/1.jpg", "/luadb/2.jpg", "/luadb/3.jpg"}, autoplay = true, interval = 1500 })
    -- 添加控件pic到page1
    page1:add(pic)

    -- 7、 CheckBox
    local cb = ui.CheckBox({ x = 20, y = 240, text = "Check me", checked = false, onChange = function (v)
        log.info("demo", "checkbox", v)
    end })
    page1:add(cb)

    -- 8、 Label 目前显示的是日期和时间
    lbl = ui.Label({ x = 20, y = 20, text = ""})
    page1:add(lbl)

    -- 将page1注册到ui
    ui.add(page1)

    -- 显示主循环
    while true do
        ui.clear()
        -- 更新时间给文本组件
        lbl:setText("时间:"..os.date("%Y-%m-%d %H:%M:%S"))
        ui.render()
        sys.wait(30)
    end
end
sys.taskInit(exEasyUI_demo)
sys.run()

2.3.11.3 PC 模拟器快捷命令

.\luatos-lua.exe .\lib\ .\demo\2.11Allcomponent\

2.3.12 Window(窗口容器)+ 水平滑动

2.3.12.1 演示效果


2.3.12.2 演示代码

-- exEasyUI v1.6.0
local ui = require("exeasyui")

sys = require("sys")

sys.taskInit(function()
    sys.wait(500)
    ui.hw.init({})
    ui.init({ theme = "light" })

    local win = ui.Window({ backgroundColor = 0xFFFF })
    -- 启用横向滚动,将两页内容并排布置到一个宽画布
    local pageW, pageH = 320, 480
    local totalW = pageW * 2
    win:enableScroll({ direction = "horizontal", contentWidth = totalW, threshold = 8, pagingEnabled = true, pageWidth = pageW })

    local function makeGrid(offsetX, labelPrefix)
        local cols, rows = 3, 3
        local bw, bh = 90, 80
        local mx, my = 20 + offsetX, 60
        local gapx, gapy = 10, 10
        local n = 1
        for r = 0, rows - 1 do
            for c = 0, cols - 1 do
                local x = mx + c * (bw + gapx)
                local y = my + r * (bh + gapy)
                local btn = ui.Button({ x = x, y = y, w = bw, h = bh, text = string.format("%s-%d", labelPrefix, n) })
                win:add(btn)
                n = n + 1
            end
        end
    end

    -- 左页与右页
    makeGrid(0,  "P1")
    makeGrid(pageW, "P2")

    ui.add(win)

    while true do
        ui.clear()
        ui.render()
        sys.wait(30)
    end
end)

sys.run()

2.3.12.3 PC 模拟器快捷命令

.\luatos-lua.exe .\lib\ .\demo\2.12Horizontal_slidin_page\

2.3.13 Window(窗口容器)+ 纵向滑动

2.3.13.1 演示效果


2.3.13.2 演示代码

-- exEasyUI v1.6.0
local ui = require("exeasyui")

sys = require("sys")

sys.taskInit(function()
    sys.wait(500)
    -- 依赖 screen_data_table.lua 内的 lcdargs/touch 参数
    ui.hw.init({})
    ui.init({ theme = "light" })

    local win = ui.Window({ backgroundColor = 0xFFFF })
    -- 启用纵向分页滚动,将两页内容上下排布到一个高画布
    local pageW, pageH = 320, 480
    local totalH = pageH * 2
    win:enableScroll({ direction = "vertical", contentHeight = totalH, threshold = 8, pagingEnabled = true, pageHeight = pageH })

    local function makeButtons(offsetY, labelPrefix)
        -- 改为竖直等间距排列:1列3行,水平居中
        local cols, rows = 1, 3
        local bw, bh = 90, 80
        local mx = math.floor((pageW - bw) / 2) -- 居中
        local gap = math.floor((pageH - rows * bh) / (rows + 1))
        if gap < 8 then gap = 8 end
        local n = 1
        for r = 0, rows - 1 do
            local x = mx
            local y = offsetY + gap + r * (bh + gap)
            local btn = ui.Button({ x = x, y = y, w = bw, h = bh, text = string.format("%s-%d", labelPrefix, n) })
            win:add(btn)
            n = n + 1
        end
    end

    -- 上页与下页:每页 3 个按钮,共 6 个
    makeButtons(0,      "P1")
    makeButtons(pageH,  "P2")

    ui.add(win)

    while true do
        ui.clear()
        ui.render()
        sys.wait(30)
    end
end)

sys.run()

2.3.13.3 PC 模拟器快捷命令

.\luatos-lua.exe .\lib\ .\demo\2.13Vertical_sliding_page\

2.3.14 页面切换

2.3.14.1 演示效果






2.3.14.2 演示代码

-- 项目名称和版本定义
PROJECT = "exEasyUI_demo"  -- 项目名称,用于标识当前工程
VERSION = "1.0.0"          -- 项目版本号

-- 引入exEasyUI库
local ui = require("exeasyui")

-- 创建一个msgbox_page页面的函数
-- 这个函数用于创建消息框演示页面
local function msgbox_page()
    -- 创建一个白色背景的窗口容器
    local win = ui.Window({ backgroundColor = ui.COLOR_WHITE })

    -- 创建一个消息框作为页面标题(不包含按钮)
    -- 这里使用MessageBox组件来显示标题和描述文字
    local title = ui.MessageBox({ 
        x = 10, y = 10,          -- 位置坐标
        w = 300, h = 80,         -- 宽度和高度
        title = "消息框页面",     -- 标题文字
        message = "点击按钮弹出消息框",  -- 描述信息
        buttons = {}             -- 空按钮数组,表示不显示任何按钮
    })

    -- 创建"弹出消息框"按钮
    local btn = ui.Button({
        x = 20, y = 140,         -- 按钮位置
        w = 180, h = 50,         -- 按钮尺寸
        text = "弹出消息框",      -- 按钮文字
        -- 按钮点击事件处理函数
        onClick = function()
            -- 当按钮被点击时,创建一个新的消息框
            local box = ui.MessageBox({
                x = 40, y = 210,     -- 消息框显示位置
                w = 240, h = 120,    -- 消息框尺寸
                title = "提示",      -- 消息框标题
                message = "这是一条消息",  -- 消息内容
                buttons = { "确定", "取消" },  -- 两个按钮
                -- 按钮点击回调函数(这里为空函数)
                onResult = function()
                    -- 可以在这里处理按钮点击后的逻辑
                end
            })
            -- 将消息框添加到UI渲染队列中
            ui.add(box)
        end
    })

    -- 创建"返回"按钮
    local back = ui.Button({
        x = 220, y = 140,        -- 按钮位置(在弹出按钮右边)
        w = 80, h = 50,          -- 按钮尺寸
        text = "返回",           -- 按钮文字
        -- 按钮点击事件:返回上一级页面
        onClick = function()
            win:back()  -- 调用窗口的back方法返回主页
        end
    })

    -- 将所有组件添加到窗口中
    win:add(title)  -- 添加标题消息框
    win:add(btn)    -- 添加弹出按钮
    win:add(back)   -- 添加返回按钮

    return win      -- 返回创建好的窗口对象
end

-- 创建一个checkbox_page页面的函数
-- 这个函数用于创建复选框演示页面
local function checkbox_page()
    -- 创建白色背景窗口
    local win = ui.Window({ backgroundColor = ui.COLOR_WHITE })

    -- 创建页面标题(使用无按钮的消息框)
    local title = ui.MessageBox({ 
        x = 10, y = 10, 
        w = 300, h = 80, 
        title = "复选框页面", 
        message = "演示多个CheckBox", 
        buttons = {} 
    })

    -- 创建三个复选框组件
    local cb1 = ui.CheckBox({ x = 20, y = 120, text = "选项A" })  -- 默认未选中
    local cb2 = ui.CheckBox({ x = 20, y = 160, text = "选项B", checked = true })  -- 默认选中
    local cb3 = ui.CheckBox({ x = 20, y = 200, text = "选项C" })  -- 默认未选中

    -- 创建返回主页按钮
    local back = ui.Button({
        x = 20, y = 260, 
        w = 120, h = 40,
        text = "返回主页",
        onClick = function()
            win:back()  -- 返回主页
        end
    })

    -- 将所有组件添加到窗口
    win:add(title)  -- 标题
    win:add(cb1)    -- 复选框A
    win:add(cb2)    -- 复选框B  
    win:add(cb3)    -- 复选框C
    win:add(back)   -- 返回按钮

    return win      -- 返回窗口对象
end

-- 主程序入口函数
local function exEasyUI_demo()
    -- 等待500毫秒,确保系统初始化完成
    sys.wait(500)

    -- 初始化硬件(lcd显示屏和触摸屏)
    ui.hw.init({})

    -- 初始化UI系统,设置主题为浅色模式
    ui.init({ theme = "light" })

    -- 创建主页面窗口(白色背景)
    local home = ui.Window({ backgroundColor = ui.COLOR_WHITE })

    -- 配置子页面工厂函数
    -- 这里注册了两个子页面:"page1"对应消息框页面,"page2"对应复选框页面
    home:configureSubpages({ 
        page1 = msgbox_page,   -- 消息框演示页面
        page2 = checkbox_page  -- 复选框演示页面
    })

    -- 创建导航按钮1:进入复选框示例页面
    local btn1 = ui.Button({
        x = 20, y = 60,    -- 按钮位置
        w = 280, h = 50,   -- 按钮尺寸
        text = "复选框示例", -- 按钮文字
        onClick = function()
            -- 点击后显示复选框示例页面
            home:showSubpage("page2")
        end
    })

    -- 创建导航按钮2:进入消息框示例页面  
    local btn2 = ui.Button({
        x = 20, y = 130,   -- 按钮位置(在第一个按钮下方)
        w = 280, h = 50,   -- 按钮尺寸
        text = "消息框示例", -- 按钮文字
        onClick = function()
            -- 点击后显示消息框示例页面
            home:showSubpage("page1")
        end
    })

    -- 创建功能按钮:移除复选框子界面(演示销毁功能)
    local btnRemove = ui.Button({
        x = 20, y = 200,   -- 按钮位置
        w = 280, h = 50,   -- 按钮尺寸
        text = "移除复选框子界面(销毁)", -- 按钮文字
        onClick = function()
            -- 强制销毁缓存的checkbox子页面,释放内存
            home:closeSubpage("page2", { destroy = true })
        end
    })

    -- 将所有按钮添加到主页面
    home:add(btn1)         -- 复选框示例按钮
    home:add(btn2)         -- 消息框示例按钮
    home:add(btnRemove)    -- 移除页面按钮

    -- 将主页面添加到UI渲染系统
    ui.add(home)

    -- 主渲染循环:持续更新和显示UI
    while true do
        ui.clear()      -- 清空屏幕
        ui.render()     -- 渲染所有可见组件
        sys.wait(30)    -- 等待30毫秒(约33帧/秒)
    end
end

-- 创建并启动主任务
sys.taskInit(exEasyUI_demo)

-- 启动系统调度器
sys.run()

2.3.14.3 PC 模拟器快捷命令

.\luatos-lua.exe .\lib\ .\demo\2.14Switch_page\

2.3.15 矢量字体

2.3.15.1 演示效果


2.3.15.2 演示代码

PROJECT = "exEasyUI_gfont_demo"
VERSION = "1.0.0"

sys = require("sys")

-- exEasyUI v1.6.0
local ui = require("exeasyui")

sys.taskInit(function()
    sys.wait(500)
    -- 打开iic供电
    gpio.setup(141, 1, gpio.PULLUP)
    -- 启用 gtfont 字体后端
    ui.hw.init({ lcd_sn = "AirLCD_1001", tp = "gt911", font = { type = "gtfont", spi = { id = 1, cs = 12, clock = 20*1000*1000 }, gray = false, size = 32 } })
    ui.init({ theme = "light" })

    local win = ui.Window({ backgroundColor = ui.COLOR_WHITE })
    ui.add(win)

    local text1 = ui.Label({ x = 10, y = 20, text = "ABCDEFG", color = ui.COLOR_BLACK })
    local text2 = ui.Label({ x = 10, y = 100, text = "abcdefg", color = ui.COLOR_RED })
    local text3 = ui.Label({ x = 10, y = 180, text = "1234567", color = ui.COLOR_GREEN })
    local text4 = ui.Label({ x = 10, y = 260, text = "!@#$%^&*", color = ui.COLOR_BLUE })
    local text5 = ui.Label({ x = 10, y = 340, text = "Hello GTFont", color = ui.COLOR_ORANGE })
    local text6 = ui.Label({ x = 10, y = 420, text = "中英混排 ABC 合宙", color = ui.COLOR_PINK })

    ui.add(text1)
    ui.add(text2)
    ui.add(text3)
    ui.add(text4)
    ui.add(text5)
    ui.add(text6)

    while true do
        ui.clear()
        ui.render()
        sys.wait(200)
    end
end)

sys.run()

2.3.15.3 PC 模拟器快捷命令

.\luatos-lua.exe .\lib\ .\demo\2.15gtfont\

三、常量详解

扩展库常量,顾名思义是由扩展库中定义的、不可重新赋值或修改的固定值,在脚本代码中需要 require("exeasyui")后,可通过 exeasyui.常量名直接调用;

exEasyUI 库定义了以下常量,用于颜色配置和触摸事件处理:

3.1 exeasyui.COLOR_WHITE

参数含义:白色  
数据类型:number  
取值范围:0xFFFF  
示例代码:
        local btn = exeasyui.Button({
            x = 10, y = 10, 
            w = 100, h = 40,
            text = "按钮",
            textColor = exeasyui.COLOR_WHITE
        })

3.2 exeasyui.COLOR_BLACK

参数含义:黑色  **
**数据类型:number  **
**取值范围:0x0000  **
**示例代码:
        local label = exeasyui.Label({
            x = 10, y = 10,
            text = "文本标签",
            color = exeasyui.COLOR_BLACK
        })

3.3 exeasyui.COLOR_GRAY

参数含义:灰色  
数据类型:number  
取值范围:0x8410  
示例代码:
        local progressBar = exeasyui.ProgressBar({
            x = 10, y = 10,
            w = 200, h = 20,
            backgroundColor = exeasyui.COLOR_GRAY
        })

3.4 exeasyui.COLOR_BLUE

参数含义:蓝色  
数据类型:number  
取值范围:0x001F  
示例代码:
        local progressBar = exeasyui.ProgressBar({
            x = 10, y = 10,
            w = 200, h = 20,
            progressColor = exeasyui.COLOR_BLUE
        })

3.5 exeasyui.COLOR_RED

参数含义:红色  
数据类型:number  
取值范围:0xF800  
示例代码:
        local label = exeasyui.Label({
            x = 10, y = 10,
            text = "错误信息",
            color = exeasyui.COLOR_RED
        })

3.6 exeasyui.COLOR_GREEN

参数含义:绿色  
数据类型:number  
取值范围:0x07E0  
示例代码:
        local label = exeasyui.Label({
            x = 10, y = 10,
            text = "成功信息",
            color = exeasyui.COLOR_GREEN
        })

3.7 exeasyui.COLOR_YELLOW

参数含义:黄色  
数据类型:number  
取值范围:0xFFE0  
示例代码:
        local label = exeasyui.Label({
            x = 10, y = 10,
            text = "警告信息",
            color = exeasyui.COLOR_YELLOW
        })

3.8 exeasyui.COLOR_CYAN

参数含义:青色  
数据类型:number  
取值范围:0x07FF  
示例代码:
        local btn = exeasyui.Button({
            x = 10, y = 10,
            w = 100, h = 40,
            text = "按钮",
            bgColor = exeasyui.COLOR_CYAN
        })

3.9 exeasyui.COLOR_MAGENTA

参数含义:洋红色  
数据类型:number  
取值范围:0xF81F  
示例代码:
        local btn = exeasyui.Button({
            x = 10, y = 10,
            w = 100, h = 40,
            text = "按钮",
            borderColor = exeasyui.COLOR_MAGENTA
        })

3.10 exeasyui.COLOR_ORANGE

参数含义:橙色  
数据类型:number  
取值范围:0xFC00  
示例代码:
        local btn = exeasyui.Button({
            x = 10, y = 10,
            w = 100, h = 40,
            text = "警告按钮",
            bgColor = exeasyui.COLOR_ORANGE
        })

3.11 exeasyui.COLOR_PINK

参数含义:粉色  
数据类型:number  
取值范围:0xF81F  
示例代码:
        local btn = exeasyui.Button({
            x = 10, y = 10,
            w = 100, h = 40,
            text = "特殊按钮",
            bgColor = exeasyui.COLOR_PINK
        })

3.12 exeasyui.COLOR_WIN11_LIGHT_DIALOG_BG

参数含义:Windows 11 浅色主题对话框背景色  
数据类型:number  
取值范围:0xF79E  
示例代码:
        local window = exeasyui.Window({
            x = 0, y = 0,
            w = 320, h = 240,
            backgroundColor = exeasyui.COLOR_WIN11_LIGHT_DIALOG_BG
        })

3.13 exeasyui.COLOR_WIN11_LIGHT_BUTTON_BG

参数含义:Windows 11 浅色主题按钮背景色  
数据类型:number  
取值范围:0xFFDF  
示例代码:
        local btn = exeasyui.Button({
            x = 10, y = 10,
            w = 100, h = 40,
            text = "按钮",
            bgColor = exeasyui.COLOR_WIN11_LIGHT_BUTTON_BG
        })

3.14 exeasyui.COLOR_WIN11_LIGHT_BUTTON_BORDER

参数含义:Windows 11 浅色主题按钮边框色  
数据类型:number  
取值范围:0xE73C  
示例代码:
        local btn = exeasyui.Button({
            x = 10, y = 10,
            w = 100, h = 40,
            text = "按钮",
            borderColor = exeasyui.COLOR_WIN11_LIGHT_BUTTON_BORDER
        })

3.15 exeasyui.COLOR_WIN11_DARK_DIALOG_BG

参数含义:Windows 11 深色主题对话框背景色  
数据类型:number  
取值范围:0x2104  
示例代码:
        local window = exeasyui.Window({
            x = 0, y = 0,
            w = 320, h = 240,
            backgroundColor = exeasyui.COLOR_WIN11_DARK_DIALOG_BG
        })

3.16 exeasyui.COLOR_WIN11_DARK_BUTTON_BG

参数含义:Windows 11 深色主题按钮背景色  
数据类型:number  
取值范围:0x3186  
示例代码:
        local btn = exeasyui.Button({
            x = 10, y = 10,
            w = 100, h = 40,
            text = "按钮",
            bgColor = exeasyui.COLOR_WIN11_DARK_BUTTON_BG
        })

3.17 exeasyui.COLOR_WIN11_DARK_BUTTON_BORDER

参数含义:Windows 11 深色主题按钮边框色  
数据类型:number  
取值范围:0x4A69  
示例代码:
        local btn = exeasyui.Button({
            x = 10, y = 10,
            w = 100, h = 40,
            text = "按钮",
            borderColor = exeasyui.COLOR_WIN11_DARK_BUTTON_BORDER
        })

四、函数详解

4.1 核心初始化与渲染接口

4.1.1 exeasyui.hw.init(opts)

功能

初始化硬件显示和触摸设备。

注意

  • 需要把 exeasyui、screen_data_table、extp、exlcd 文件一同烧录到设备中,才能确保 exeasyui 扩展库正常运行,并且 screen_data_table 中的参数正确配置。
  • 初始化硬件显示和触摸设备,exeasyui 默认开启缓冲区设置,禁用 JPG 图片硬件解码,使用 12 号中文字体。
  • 启用缓冲区后,缓冲区会占用固定的内存空间(大小为:屏幕宽度 × 屏幕高度 × 2 字节),所有绘图操作结果所生成的数据将首先写入缓冲区,在执行刷新指令时,系统会一次性将缓冲区中的数据快速传输至屏幕。
  • 若不设置缓冲区,模块需要一边处理图像数据一边等待数据发送,每次只要产生显示数据都需要寻找端口然后发送,相对于设置缓冲区实现同样的操作运行效率更低。
  • JPG 硬件解码开启,图片刷新速度更快, JPG 图片的长宽都需要是 16 的倍数, 否则会出现画面拉伸的现象。
  • 使用 gtfont 外置矢量字体,需要正确配置相关参数。

参数

opts

参数含义:硬件配置参数表
数据类型:table
是否必选:可选
取值范围:包含以下enableBufferenableHardwareDecodefont 三个可选子参数:
        {
            参数含义:启用帧缓冲区
            数据类型:boolean
            取值范围:true(启用), false(禁用)
            是否必选:可选
            注意事项:默认启用
            参数示例:true
            enableBuffer =  ,

            参数含义:启用硬件JPG解码
            数据类型:boolean
            取值范围:true(启用), false(禁用)
            是否必选:可选
            注意事项:默认禁用
            参数示例:false
            enableHardwareDecode =  ,

            参数含义:字体配置参数表
            数据类型:table
            取值范围:包含以下可选子参数:
                    {
                        参数含义:字体后端类型
                        数据类型:string
                        取值范围:"gtfont"(外部字体芯片), "default"(内置字体)
                        是否必选:可选
                        注意事项:不设置时默认使用"default",显示为12号中文字体;
                        参数示例:"gtfont"
                        type = ,

                        参数含义:字体大小
                        数据类型:number
                        取值范围:大于0的整数
                        是否必选:可选
                        注意事项:gtfont模式下有效,默认16
                        参数示例:16
                        size =  ,

                        参数含义:是否启用灰度渲染
                        数据类型:boolean
                        取值范围:true(启用), false(禁用)
                        是否必选:可选
                        注意事项:gtfont模式下有效,默认false
                        参数示例:true
                        gray =  ,

                        参数含义:SPI通信配置
                        数据类型:table
                        取值范围:包含以下子参数:
                                {
                                    参数含义:SPI端口号
                                    数据类型:number
                                    取值范围:0, 1, 2等有效SPI端口
                                    是否必选:是(当使用gtfont时
                                    注意事项:如果使用软件SPI,则这里传入软件SPI对象
                                    参数示例:1
                                    id =  ,

                                    参数含义:SPI片选引脚
                                    数据类型:number
                                    取值范围:有效GPIO引脚号
                                    是否必选:是(当使用gtfont时
                                    注意事项:必须正确连接GTFont芯片的CS引脚
                                    参数示例:12
                                    cs =  ,
                                }
                        是否必选:可选
                        注意事项:仅当type为"gtfont"时需要配置
                        spi =  ,
                    }                        
            是否必选:可选
            注意事项:如果使用gtfont,必须正确连接硬件并配置spi参数
            font =  ,
        }
数据类型:table
取值范围:参数含义中规定的参数
是否必选:可选
注意事项:硬件初始化必须在其他UI操作之前调用

返回值

local hwinit_result = exeasyui.hw.init(opts)

hwinit_result

含义说明:硬件初始化结果
数据类型:boolean
取值范围:true(成功), false(失败)
注意事项:初始化失败时后续UI操作可能异常
返回示例:true

示例 1:使用默认参数初始化硬件

-- 初始化exeasyui 硬件,默认开启缓冲区设置,禁用jpg图片硬件解码,使用12号中文字体
exeasyui.hw.init({})

示例 2:使用 GTFont 外部字体芯片初始化硬件

-- 初始化硬件
local success = exeasyui.hw.init({
    enableBuffer = true,
    enableHardwareDecode = false,
    font = {
        type = "gtfont",
        size = 16,
        spi = {
            id = 1,
            cs = 12,
        }
    }
})

if success then
    log.info("硬件初始化成功")
else
    log.error("硬件初始化失败")
end

4.1.2 exeasyui.init(opts)

功能

初始化 exEasyUI 系统,配置主题和事件处理系统。

参数

opts

参数含义系统配置参数表
数据类型table
是否必选可选
取值范围包含以下可选子参数
        {
            参数含义设置UI主题模式
            数据类型string
            取值范围"light"浅色模式, "dark"深色模式
            是否必选可选
            注意事项不设置时默认使用"dark"深色模式
            参数示例"light"
            theme =  ,
        }
数据类型table
取值范围参数含义中规定的参数
是否必选可选
注意事项所有参数均为可选不传入opts时使用默认配置

返回值

示例

-- 初始化exEasyUI系统
exeasyui.init(
    {
        theme = "light", -- 使用浅色主题
    }
)

4.1.3 exeasyui.add(component)

功能

将UI组件添加到exeasyui的渲染队列,调用exeasyui.render()刷新组件时会已添加到exeasyui中的组件,还会根据父组件索引对应的子组件状态,然后渲染出来。

参数

component

参数含义:UI组件对象
数据类型:table
是否必选:是
取值范围:通过exeasyui.windowexeasyui.Buttonexeasyui.Label等构造函数创建的对象
注意事项:
参数示例:button_component

返回值

示例 1 在 exeasyui 中添加 Window 组件

-- 创建Window(窗口容器),设置背景为黑色,命名为page1
    local page1 = exeasyui.Window({ backgroundColor = ui.COLOR_WHITE })
    exeasyui.add(page1)

示例 2 在 exeasyui 中添加 button 组件

local button = exeasyui.Button({x=10, y=10, w=100, h=36, text="测试按钮"})
exeasyui.add(button)

4.1.4 exeasyui.remove(component)

功能

从渲染队列中移除 UI 组件。

参数

component

参数含义:要移除的UI组件对象
数据类型:table
是否必选:是
取值范围:已通过exeasyui.add添加的组件对象
注意事项:移除后组件将不再被渲染和响应事件
参数示例:button_component

返回值

local remove_result = exeasyui.remove(component)

remove_result

含义说明:移除操作结果
数据类型:boolean
取值范围:true(成功移除), false(未找到组件)
注意事项:无
返回示例:true

示例

local button = exeasyui.Button({x=10, y=10, w=100, h=36, text="测试按钮"})
exeasyui.add(button)

-- 稍后移除按钮
local result = exeasyui.remove(button)
if result then
    log.info("按钮移除成功")
end

4.1.5 xeasyui.clear(color)

功能

清空屏幕并填充指定颜色。

参数

color

参数含义:清屏颜色
数据类型:number
是否必选:可选
取值范围:第三章常量解释中的3.1-3.17章节中的颜色常量,或其他16RGB565颜色值;
注意事项:不传入时默认使用黑色
参数示例:exeasyui.COLOR_WHITE

返回值

示例

-- 清屏为白色
exeasyui.clear(exeasyui.COLOR_WHITE)

-- 清屏为默认黑色
exeasyui.clear()

4.1.6 exeasyui.render()

功能

渲染所有已添加的可见组件到屏幕。

参数

返回值

示例

-- 添加组件
local button = exeasyui.Button({x=10, y=10, w=100, h=36, text="按钮"})
exeasyui.add(button)

-- 渲染到屏幕
exeasyui.render()

4.1.7 exeasyui.debug(v)

功能

配置调试模式开关。

参数

v

参数含义:调试配置
数据类型:boolean
是否必选:可选
取值范围:true或false
注意事项:暂无
参数示例:true

返回值

示例

-- 启用调试信息(默认)
exeasyui.debug(true)

-- 关闭所有调试
exeasyui.debug(false)

-- 查询当前调试状态
-- 注意:此接口主要用于控制TP消息等调试信息的输出

4.1.8 exeasyui.getTheme()

功能

获取当前 UI 主题模式。

参数

返回值

local current_theme = exeasyui.getTheme()

current_theme

含义说明:当前主题模式
数据类型:string
取值范围:"light", "dark"
注意事项:无
返回示例:"dark"

示例

local theme = exeasyui.getTheme()
log.info("当前主题", theme)

4.2 组件构造函数及构造后使用方法

4.2.1 exeasyui.Window(opts)

功能

创建窗口容器组件,支持子组件管理和页面导航。

参数

opts

参数含义窗口配置参数表
数据类型table
是否必选
取值范围包含以下子参数
        {
            参数含义窗口左上角X坐标
            数据类型number
            取值范围0到屏幕宽度
            是否必选可选
            注意事项默认0全屏
            参数示例0
            x =  ,

            参数含义窗口左上角Y坐标
            数据类型number
            取值范围0到屏幕高度
            是否必选可选
            注意事项默认0全屏
            参数示例0
            y =  ,

            参数含义窗口宽度
            数据类型number
            取值范围大于0的整数
            是否必选可选
            注意事项默认屏幕宽度
            参数示例320
            w =  ,

            参数含义窗口高度
            数据类型number
            取值范围大于0的整数
            是否必选可选
            注意事项默认屏幕高度
            参数示例240
            h =  ,

            参数含义窗口背景图片路径
            数据类型string
            取值范围有效的JPG文件路径
            是否必选可选
            注意事项与backgroundColor背景色参数互斥
            参数示例"/luadb/bg.jpg"
            backgroundImage =  ,

            参数含义窗口背景颜色
            数据类型number
            取值范围第三章常量解释中的3.1-3.17章节中的颜色常量或其他16位RGB565颜色值
            是否必选可选
            注意事项不设置时根据主题自动选择
            参数示例exeasyui.COLOR_BLACK
            backgroundColor =  ,

            参数含义窗口是否可见
            数据类型boolean
            取值范围true可见, false不可见
            是否必选可选
            注意事项默认可见
            参数示例true
            visible =  ,

            参数含义窗口是否启用
            数据类型boolean
            取值范围true启用, false禁用
            是否必选可选
            注意事项禁用时不响应触摸事件
            参数示例true
            enabled =  ,
        }
数据类型table
取值范围参数含义中规定的参数
是否必选
注意事项窗口通常作为其他组件的容器使用

返回值

local window_component = exeasyui.Window(opts)

window_component

含义说明:窗口组件对象
数据类型:table
取值范围:包含drawhandleEventaddremove等方法的组件对象
注意事项:需要调用exeasyui.add添加到渲染队列
返回示例:window_object

示例

ui = require("exeasyui")

-- 创建窗口
local win = exeasyui.Window({
    backgroundColor = exeasyui.COLOR_BLACK
})

-- 配置子页面
win:configureSubpages({
    page1 = function() return exeasyui.Window({backgroundColor = exeasyui.COLOR_RED}) end,
    page2 = function() return exeasyui.Window({backgroundColor = exeasyui.COLOR_BLUE}) end
})

-- 显示子页面
win:showSubpage("page1")

sys.wait(3000)
win:showSubpage("page2")

exeasyui.add(win)
4.2.1.1 Window:add(child)

功能

向 Window 组件添加一个子组件。

参数

child

参数含义:要添加的组件实例
数据类型:table
是否必选:是
取值范围:任何实现了draw和handleEvent方法的组件对象
注意事项:组件必须通过exeasyui.Buttonexeasyui.Label等构造函数创建
参数示例:button_object

返回值

示例

ui = require("exeasyui")

-- 创建Window(窗口容器),设置背景为白色,命名为page1
local page1 = ui.Window({ backgroundColor = ui.COLOR_WHITE })

-- 创建一个Button(按钮)文本模式,显示在(20.20)位置,命名为btn1
local btn1 = ui.Button({ x = 20, y = 20})

-- 将btn1添加到page1内
page1:add(btn1)
4..2.1.2 Window:remove(child)

功能

从窗口中移除一个已添加的子组件。

参数

child

参数含义:要移除的组件实例
数据类型:table
是否必选:是
取值范围:已通过add方法添加到窗口的组件对象
注意事项:移除后组件将不再被渲染和响应事件
参数示例:button_object

返回值

local remove_result = Window:remove(child)

remove_result

含义说明:移除操作结果
数据类型:boolean
取值范围:true(成功移除), false(未找到组件)
注意事项:无
返回示例:true

示例

-- 创建Window(窗口容器),设置背景为白色,命名为page1
local page1 = ui.Window({ backgroundColor = ui.COLOR_WHITE })

-- 创建一个Button(按钮)文本模式,显示在(20.20)位置,命名为btn1
local btn1 = ui.Button({ x = 20, y = 20})

local remove_result = page1:remove(btn1)

if remove_result then
    [log.info](https://log.info/)("组件btn1移除成功")
end
4.2.1.3 Window:clear()

功能

清空窗口的所有子组件。

参数

返回值

示例

-- 创建Window(窗口容器),设置背景为白色,命名为page1
local page1 = ui.Window({ backgroundColor = ui.COLOR_WHITE })

-- 清除名为page1的Window(窗口容器)中的子组件
page1:clear()
4.2.1.4 Window:setBackgroundImage(path)

功能

设置窗口背景图片。

参数

path

参数含义:背景图片文件路径
数据类型:string
是否必选:是
取值范围:有效的JPG文件路径
注意事项:设置背景图片会覆盖背景颜色
参数示例:"/luadb/wallpaper.jpg"

返回值

示例

ui = require("exeasyui")

-- 创建Window(窗口容器),设置背景为白色,命名为page1
local page1 = ui.Window({ backgroundColor = ui.COLOR_WHITE })

page1:setBackgroundImage("/luadb/background.jpg")
4.2.1.5 Window:setBackgroundColor(color)

功能

设置窗口背景颜色,并清除已设置的背景图片。

参数

color

参数含义:背景颜色值
数据类型:number
是否必选:是
取值范围:第三章常量解释中的3.1-3.17章节中的颜色常量,或其他16RGB565颜色值
注意事项:设置背景颜色会清除背景图片
参数示例:exeasyui.COLOR_WHITE

返回值

示例

ui = require("exeasyui")

-- 创建Window(窗口容器),设置背景为白色,命名为page1
local page1 = ui.Window({ backgroundColor = ui.COLOR_WHITE })

page1:setBackgroundColor(ui.COLOR_BLACK)
4.2.1.6 Window:enableScroll(opts)

功能

启用窗口内容的拖拽滚动与可选的横向分页吸附功能。

参数

opts

参数含义:滚动/分页配置参数表
数据类型:table
是否必选:可选
取值范围:包含以下子参数:
        {
            参数含义:滚动方向
            数据类型:string
            取值范围:"vertical"(纵向), "horizontal"(横向), "both"(双向)
            是否必选:可选
            注意事项:默认"vertical"
            参数示例:"vertical"
            direction = ,

            参数含义:内容区域总宽度
            数据类型:number
            取值范围:大于0的整数
            是否必选:可选
            注意事项:默认等于窗口宽度
            参数示例:640
            contentWidth =  ,

            参数含义:内容区域总高度
            数据类型:number
            取值范围:大于0的整数
            是否必选:可选
            注意事项:默认等于窗口高度
            参数示例:1200
            contentHeight =  ,

            参数含义:拖拽判定阈值
            数据类型:number
            取值范围:大于0的整数,单位像素
            是否必选:可选
            注意事项:默认10像素
            参数示例:8
            threshold =  ,

            参数含义:是否启用分页吸附
            数据类型:boolean
            取值范围:true(启用), false(禁用)
            是否必选:可选
            注意事项:横向或双向滚动时有效
            参数示例:true
            pagingEnabled =  ,

            参数含义:分页宽度
            数据类型:number
            取值范围:大于0的整数
            是否必选:可选
            注意事项:默认等于窗口宽度
            参数示例:320
            pageWidth =  ,
        }
数据类型:table
取值范围:参数含义中规定的参数
是否必选:可选
注意事项:所有参数均为可选

返回值

local window_self = win:enableScroll(opts)

window_self

含义说明:窗口自身对象
数据类型:table
取值范围:窗口组件对象
注意事项:支持链式调用
返回示例:window_object

示例

ui = require("exeasyui")

-- 创建Window(窗口容器),设置背景为白色,命名为page1
local page1 = ui.Window({ backgroundColor = ui.COLOR_WHITE })

-- 纵向滚动
page1:enableScroll({
    direction = "vertical",
    contentHeight = 1200,
    threshold = 8
})

-- 横向分页
page1:enableScroll({
    direction = "horizontal",
    pagingEnabled = true,
    pageWidth = 320,
    contentWidth = 960
})
4.2.1.7 Window:setContentSize(w, h)

功能

设置内容区域尺寸,影响滚动边界的计算。

参数

w

参数含义:内容区域宽度
数据类型:number
是否必选:可选
取值范围:大于0的整数
注意事项:至少提供w或h其中一个参数
参数示例:640

h

参数含义:内容区域高度
数据类型:number
是否必选:可选
取值范围:大于0的整数
注意事项:至少提供w或h其中一个参数
参数示例:1200

返回值

示例

ui = require("exeasyui")

-- 创建Window(窗口容器),设置背景为白色,命名为page1
local page1 = ui.Window({ backgroundColor = ui.COLOR_WHITE })

page1:setContentSize(320, 1200)
page1:setContentSize(640) -- 只设置宽度
page1:setContentSize(nil, 800) -- 只设置高度
4.2.1.8 Window:enableSubpageManager(opts)

功能

启用子页面管理能力,注册返回事件及回调函数。

参数

opts

参数含义:子页面管理配置参数表
数据类型:table
是否必选:可选
取值范围:包含以下子参数:
        {
            参数含义:返回事件名称
            数据类型:string
            取值范围:任意字符串
            是否必选:可选
            注意事项:默认"NAV.BACK"
            参数示例:"NAV_BACK"
            backEventName = ,

            参数含义:返回事件回调函数
            数据类型:function
            取值范围:格式为function() end的函数
            是否必选:可选
            注意事项:在父窗口范围内调用
            参数示例:function() log.info("返回按钮点击") end
            onBack =  ,
        }
数据类型:table
取值范围:参数含义中规定的参数
是否必选:可选
注意事项:通常只需要调用一次

返回值

local window_self = win:enableSubpageManager(opts)

window_self

含义说明:窗口自身对象
数据类型:table
取值范围:窗口组件对象
注意事项:支持链式调用
返回示例:window_object

示例

ui = require("exeasyui")

-- 创建Window(窗口容器),设置背景为白色,命名为page1
local page1 = ui.Window({ backgroundColor = ui.COLOR_WHITE })

page1:enableSubpageManager({
    backEventName = "NAV_BACK",
    onBack = function()
        log.info("导航返回")
    end
})
4.2 1.9 Window:configureSubpages(factories)

功能

注册子页面工厂函数表。

参数

factories

参数含义:子页面工厂函数表
数据类型:table
是否必选:是
取值范围:键值对表,键为子页面名称,值为返回Window对象的函数
注意事项:工厂函数应返回一个Window实例
参数示例:{settings = function() return settings_window end}

返回值

local window_self = Window:configureSubpages(factories)

window_self

含义说明:窗口自身对象
数据类型:table
取值范围:窗口组件对象
注意事项:支持链式调用
返回示例:window_object

示例

-- 引入exEasyUI库
local ui = require("exeasyui")

-- 创建一个msgbox_page页面的函数
-- 这个函数用于创建消息框演示页面
local function msgbox_page()
    -- 创建一个白色背景的窗口容器
    local win = ui.Window({ backgroundColor = ui.COLOR_WHITE })

    -- 创建"返回"按钮
    local back = ui.Button({
        x = 220, y = 140,        -- 按钮位置(在弹出按钮右边)
        w = 80, h = 50,          -- 按钮尺寸
        text = "返回",           -- 按钮文字
        -- 按钮点击事件:返回上一级页面
        onClick = function()
            win:back()  -- 调用窗口的back方法返回主页
        end
    })

    -- 将组件添加到窗口中
    win:add(back)   -- 添加返回按钮

    return win      -- 返回创建好的窗口对象
end

-- 主程序入口函数
local function exEasyUI_demo()
    -- 等待500毫秒,确保系统初始化完成
    sys.wait(500)

    -- 初始化硬件(lcd显示屏和触摸屏)
    ui.hw.init({})

    -- 初始化UI系统,设置主题为浅色模式
    ui.init({ theme = "light" })

    -- 创建主页面窗口(白色背景)
    local home = ui.Window({ backgroundColor = ui.COLOR_WHITE })

    -- 配置子页面工厂函数
    -- 这里注册了两个子页面:"page1"对应消息框页面,"page2"对应复选框页面
    home:configureSubpages({ 
        page1 = msgbox_page,   -- 消息框演示页面
    })

    -- 创建导航按钮2:进入消息框示例页面  
    local btn2 = ui.Button({
        x = 20, y = 130,   -- 按钮位置(在第一个按钮下方)
        w = 280, h = 50,   -- 按钮尺寸
        text = "消息框示例", -- 按钮文字
        onClick = function()
            -- 点击后显示消息框示例页面
            home:showSubpage("page1")
        end
    })

    -- 将按钮添加到主页面
    home:add(btn2)         -- 消息框示例按钮

    -- 将主页面添加到UI渲染系统
    ui.add(home)

    -- 主渲染循环:持续更新和显示UI
    while true do
        ui.clear()      -- 清空屏幕
        ui.render()     -- 渲染所有可见组件
        sys.wait(30)    -- 等待30毫秒(约33帧/秒)
    end
end

-- 创建并启动主任务
sys.taskInit(exEasyUI_demo)
4.2.1.10 Window:showSubpage(name, factory)

功能

显示指定名称的子页面。

参数

name

参数含义:子页面名称
数据类型:string
是否必选:是
取值范围:已通过configureSubpages注册的名称或任意字符串
注意事项:如果名称未注册,需要提供factory参数
参数示例:"settings"

factory

参数含义:备用工厂函数
数据类型:function
是否必选:可选
取值范围:返回Window对象的函数
注意事项:当name未注册时使用
参数示例:function() return settings_window end

返回值

示例

-- 引入exEasyUI库
local ui = require("exeasyui")

-- 创建一个msgbox_page页面的函数
-- 这个函数用于创建消息框演示页面
local function msgbox_page()
    -- 创建一个白色背景的窗口容器
    local win = ui.Window({ backgroundColor = ui.COLOR_WHITE })

    -- 创建"返回"按钮
    local back = ui.Button({
        x = 220, y = 140,        -- 按钮位置(在弹出按钮右边)
        w = 80, h = 50,          -- 按钮尺寸
        text = "返回",           -- 按钮文字
        -- 按钮点击事件:返回上一级页面
        onClick = function()
            win:back()  -- 调用窗口的back方法返回主页
        end
    })

    -- 将组件添加到窗口中
    win:add(back)   -- 添加返回按钮

    return win      -- 返回创建好的窗口对象
end

-- 主程序入口函数
local function exEasyUI_demo()
    -- 等待500毫秒,确保系统初始化完成
    sys.wait(500)

    -- 初始化硬件(lcd显示屏和触摸屏)
    ui.hw.init({})

    -- 初始化UI系统,设置主题为浅色模式
    ui.init({ theme = "light" })

    -- 创建主页面窗口(白色背景)
    local home = ui.Window({ backgroundColor = ui.COLOR_WHITE })

    -- 配置子页面工厂函数
    -- 这里注册了两个子页面:"page1"对应消息框页面,"page2"对应复选框页面
    home:configureSubpages({ 
        page1 = msgbox_page,   -- 消息框演示页面
    })

    -- 创建导航按钮2:进入消息框示例页面  
    local btn2 = ui.Button({
        x = 20, y = 130,   -- 按钮位置(在第一个按钮下方)
        w = 280, h = 50,   -- 按钮尺寸
        text = "消息框示例", -- 按钮文字
        onClick = function()
            -- 点击后显示消息框示例页面
            home:showSubpage("page1")
        end
    })

    -- 将按钮添加到主页面
    home:add(btn2)         -- 消息框示例按钮

    -- 将主页面添加到UI渲染系统
    ui.add(home)

    -- 主渲染循环:持续更新和显示UI
    while true do
        ui.clear()      -- 清空屏幕
        ui.render()     -- 渲染所有可见组件
        sys.wait(30)    -- 等待30毫秒(约33帧/秒)
    end
end

-- 创建并启动主任务
sys.taskInit(exEasyUI_demo)
4.2.1.11 Window:back()

功能

在子页面中调用,关闭当前子页面并返回父窗口。

参数

返回值

示例

-- 引入exEasyUI库
local ui = require("exeasyui")

-- 创建一个msgbox_page页面的函数
-- 这个函数用于创建消息框演示页面
local function msgbox_page()
    -- 创建一个白色背景的窗口容器
    local win = ui.Window({ backgroundColor = ui.COLOR_WHITE })

    -- 创建"返回"按钮
    local back = ui.Button({
        x = 220, y = 140,        -- 按钮位置(在弹出按钮右边)
        w = 80, h = 50,          -- 按钮尺寸
        text = "返回",           -- 按钮文字
        -- 按钮点击事件:返回上一级页面
        onClick = function()
            win:back()  -- 调用窗口的back方法返回主页
        end
    })

    -- 将组件添加到窗口中
    win:add(back)   -- 添加返回按钮

    return win      -- 返回创建好的窗口对象
end

-- 主程序入口函数
local function exEasyUI_demo()
    -- 等待500毫秒,确保系统初始化完成
    sys.wait(500)

    -- 初始化硬件(lcd显示屏和触摸屏)
    ui.hw.init({})

    -- 初始化UI系统,设置主题为浅色模式
    ui.init({ theme = "light" })

    -- 创建主页面窗口(白色背景)
    local home = ui.Window({ backgroundColor = ui.COLOR_WHITE })

    -- 配置子页面工厂函数
    -- 这里注册了两个子页面:"page1"对应消息框页面,"page2"对应复选框页面
    home:configureSubpages({ 
        page1 = msgbox_page,   -- 消息框演示页面
    })

    -- 创建导航按钮2:进入消息框示例页面  
    local btn2 = ui.Button({
        x = 20, y = 130,   -- 按钮位置(在第一个按钮下方)
        w = 280, h = 50,   -- 按钮尺寸
        text = "消息框示例", -- 按钮文字
        onClick = function()
            -- 点击后显示消息框示例页面
            home:showSubpage("page1")
        end
    })

    -- 将按钮添加到主页面
    home:add(btn2)         -- 消息框示例按钮

    -- 将主页面添加到UI渲染系统
    ui.add(home)

    -- 主渲染循环:持续更新和显示UI
    while true do
        ui.clear()      -- 清空屏幕
        ui.render()     -- 渲染所有可见组件
        sys.wait(30)    -- 等待30毫秒(约33帧/秒)
    end
end

-- 创建并启动主任务
sys.taskInit(exEasyUI_demo)
4.2.1.12 Window:closeSubpage(name, opts)

功能

关闭指定名称的子页面。

参数

name

参数含义:要关闭的子页面名称
数据类型:string
是否必选:是
取值范围:已通过showSubpage显示的子页面名称
注意事项:无
参数示例:"settings"

opts

参数含义:关闭选项参数表
数据类型:table
是否必选:可选
取值范围:包含以下子参数:
        {
            参数含义:是否彻底销毁子页面
            数据类型:boolean
            取值范围:true(销毁), false(仅隐藏)
            是否必选:可选
            注意事项:销毁后会触发垃圾回收
            参数示例:true
            destroy = ,
        }
数据类型:table
取值范围:参数含义中规定的参数
是否必选:可选
注意事项:无

返回值

local close_result = win:closeSubpage(name, opts)

close_result

含义说明:关闭操作结果
数据类型:boolean
取值范围:true(成功关闭), false(子页面不存在)
注意事项:无
返回示例:true

示例

-- 引入exEasyUI库
local ui = require("exeasyui")

-- 创建一个checkbox_page页面的函数
-- 这个函数用于创建复选框演示页面
local function checkbox_page()
    -- 创建白色背景窗口
    local win = ui.Window({ backgroundColor = ui.COLOR_WHITE })

    -- 创建三个复选框组件
    local cb1 = ui.CheckBox({ x = 20, y = 120, text = "选项A" })  -- 默认未选中
    local cb2 = ui.CheckBox({ x = 20, y = 160, text = "选项B", checked = true })  -- 默认选中
    local cb3 = ui.CheckBox({ x = 20, y = 200, text = "选项C" })  -- 默认未选中

    -- 创建返回主页按钮
    local back = ui.Button({
        x = 20, y = 260, 
        w = 120, h = 40,
        text = "返回主页",
        onClick = function()
            win:back()  -- 返回主页
        end
    })

    -- 将所有组件添加到窗口
    win:add(cb1)    -- 复选框A
    win:add(cb2)    -- 复选框B  
    win:add(cb3)    -- 复选框C
    win:add(back)   -- 返回按钮

    return win      -- 返回窗口对象
end

-- 主程序入口函数
local function exEasyUI_demo()
    -- 等待500毫秒,确保系统初始化完成
    sys.wait(500)

    -- 初始化硬件(lcd显示屏和触摸屏)
    ui.hw.init({})

    -- 初始化UI系统,设置主题为浅色模式
    ui.init({ theme = "light" })

    -- 创建主页面窗口(白色背景)
    local home = ui.Window({ backgroundColor = ui.COLOR_WHITE })

    -- 配置子页面工厂函数
    -- 这里注册了两个子页面:"page1"对应消息框页面,"page2"对应复选框页面
    home:configureSubpages({ 
        page1 = msgbox_page,   -- 消息框演示页面
    })

    -- 创建导航按钮1:进入复选框示例页面
    local btn1 = ui.Button({
        x = 20, y = 60,    -- 按钮位置
        w = 280, h = 50,   -- 按钮尺寸
        text = "复选框示例", -- 按钮文字
        onClick = function()
            -- 点击后显示复选框示例页面
            home:showSubpage("page2")
        end
    })

        -- 创建功能按钮:移除复选框子界面(演示销毁功能)
    local btnRemove = ui.Button({
        x = 20, y = 200,   -- 按钮位置
        w = 280, h = 50,   -- 按钮尺寸
        text = "移除复选框子界面(销毁)", -- 按钮文字
        onClick = function()
            -- 强制销毁缓存的checkbox子页面,释放内存
            home:closeSubpage("page2", { destroy = true })
        end
    })

    -- 将按钮添加到主页面
    home:add(btn2)         -- 消息框示例按钮
    home:add(btnRemove)    -- 移除页面按钮

    -- 将主页面添加到UI渲染系统
    ui.add(home)

    -- 主渲染循环:持续更新和显示UI
    while true do
        ui.clear()      -- 清空屏幕
        ui.render()     -- 渲染所有可见组件
        sys.wait(30)    -- 等待30毫秒(约33帧/秒)
    end
end

-- 创建并启动主任务
sys.taskInit(exEasyUI_demo)

4.2.2 exeasyui.Label(opts)

功能

创建文本标签组件。

参数

opts

参数含义标签配置参数表
数据类型table
是否必选
取值范围包含以下子参数
        {
            参数含义标签左上角X坐标
            数据类型number
            取值范围0到屏幕宽度
            是否必选
            注意事项必须为整数
            参数示例10
            x =  ,

            参数含义标签左上角Y坐标
            数据类型number
            取值范围0到屏幕高度
            是否必选
            注意事项必须为整数
            参数示例10
            y =  ,

            参数含义标签显示文本
            数据类型string
            取值范围任意字符串
            是否必选
            注意事项支持中文
            参数示例"Hello World"
            text =  ,

            参数含义标签文本颜色
            数据类型number
            取值范围第三章常量解释中的3.1-3.17章节中的颜色常量或其他16位RGB565颜色值
            是否必选可选
            注意事项不设置时根据主题自动选择
            参数示例exeasyui.COLOR_WHITE
            color =  ,

            参数含义标签文本大小
            数据类型number
            取值范围大于0的整数
            是否必选可选
            注意事项默认使用系统字体大小
            参数示例12
            size =  ,

            参数含义标签宽度
            数据类型number
            取值范围大于0的整数
            是否必选可选
            注意事项不设置时自动计算文本宽度
            参数示例100
            w =  ,

            参数含义是否启用自动换行
            数据类型boolean
            取值范围true启用, false禁用
            是否必选可选
            注意事项启用时需要设置w参数
            参数示例true
            wordWrap =  ,

            参数含义自定义字体指针
            数据类型userdata
            取值范围有效的字体对象
            是否必选可选
            注意事项高级用法通常不需要设置
            参数示例lcd.font_opposansm12
            font =  ,

            参数含义标签是否可见
            数据类型boolean
            取值范围true可见, false不可见
            是否必选可选
            注意事项默认可见
            参数示例true
            visible =  ,

            参数含义标签是否启用
            数据类型boolean
            取值范围true启用, false禁用
            是否必选可选
            注意事项标签不响应事件此参数主要用于布局
            参数示例true
            enabled =  ,
        }
数据类型table
取值范围参数含义中规定的参数
是否必选
注意事项必须包含位置和文本参数

返回值

local label_component = exeasyui.Label(opts)

label_component

含义说明:标签组件对象
数据类型:table
取值范围:包含drawhandleEventsetText等方法的组件对象
注意事项:需要调用exeasyui.add添加到渲染队列
返回示例:label_object

示例

-- 创建单行标签
local label1 = exeasyui.Label({
    x = 10, y = 150,
    text = "单行文本",
    color = exeasyui.COLOR_WHITE,
    size = 16
})

-- 创建自动换行标签
local label2 = exeasyui.Label({
    x = 10, y = 180,
    w = 200,
    text = "这是一段很长的文本,当启用自动换行时会根据宽度自动换行显示",
    wordWrap = true,
    color = exeasyui.COLOR_YELLOW
})

exeasyui.add(label1)
exeasyui.add(label2)

-- 动态更新文本
label1:setText("更新后的文本")
label1:setSize(18)  -- 更改字体大小
4.2.2.1 Label:setText(t)

功能

设置标签显示的文本。

参数

t

参数含义:新的标签文本
数据类型:string
是否必选:是
取值范围:任意字符串
注意事项:支持自动换行标签
参数示例:"新标签文本"

返回值

示例

local label = exeasyui.Label({x=10, y=10, text="原始文本"})
label:setText("更新后的文本")
4.2.2.2 Label:setSize(sz)

功能

设置标签文本的字体大小,仅使用外置 gtfont 矢量字体有效。

参数

sz

参数含义:字体大小
数据类型:number
是否必选:是
取值范围:大于0的整数
注意事项:会影响标签的宽度和高度计算
参数示例:16

返回值

示例

local label = exeasyui.Label({x=10, y=10, text="文本", size=12})
label:setSize(16) -- 增大字体大小

4.2.3 exeasyui.Button(opts)

功能

创建按钮组件,支持文本按钮和图片按钮。

参数

opts

参数含义按钮配置参数表
数据类型table
是否必选
取值范围包含以下子参数
        {
            参数含义按钮左上角X坐标
            数据类型number
            取值范围0到屏幕宽度
            是否必选
            注意事项必须为整数
            参数示例10
            x =  ,

            参数含义按钮左上角Y坐标
            数据类型number
            取值范围0到屏幕高度
            是否必选
            注意事项必须为整数
            参数示例10
            y =  ,

            参数含义按钮宽度
            数据类型number
            取值范围大于0的整数
            是否必选
            注意事项必须为整数
            参数示例100
            w =  ,

            参数含义按钮高度
            数据类型number
            取值范围大于0的整数
            是否必选
            注意事项必须为整数
            参数示例36
            h =  ,

            参数含义按钮显示文本
            数据类型string
            取值范围任意字符串
            是否必选文本模式和图片模式二选一
            注意事项与src参数互斥
            参数示例"确定"
            text =  ,

            参数含义按钮背景颜色
            数据类型number
            取值范围第三章常量解释中的3.1-3.17章节中的颜色常量或其他16位RGB565颜色值
            是否必选可选
            注意事项不设置时根据主题自动选择
            参数示例exeasyui.COLOR_BLUE
            bgColor =  ,

            参数含义按钮文本颜色
            数据类型number
            取值范围第三章常量解释中的3.1-3.17章节中的颜色常量或其他16位RGB565颜色值
            是否必选可选
            注意事项不设置时根据主题自动选择
            参数示例exeasyui.COLOR_WHITE
            textColor =  ,

            参数含义按钮边框颜色
            数据类型number
            取值范围第三章常量解释中的3.1-3.17章节中的颜色常量或其他16位RGB565颜色值
            是否必选可选
            注意事项不设置时根据主题自动选择
            参数示例exeasyui.COLOR_GRAY
            borderColor =  ,

            参数含义按钮文本大小
            数据类型number
            取值范围大于0的整数
            是否必选可选
            注意事项文本模式有效
            参数示例12
            textSize =  ,

            参数含义按钮图片路径图片模式
            数据类型string
            取值范围有效的JPG文件路径
            是否必选文本模式和图片模式二选一
            注意事项与text参数互斥
            参数示例"/luadb/button.jpg"
            src =  ,

            参数含义按下状态图片路径
            数据类型string
            取值范围有效的JPG文件路径
            是否必选可选
            注意事项图片模式有效
            参数示例"/luadb/button_pressed.jpg"
            src_pressed =  ,

            参数含义切换状态图片路径
            数据类型string
            取值范围有效的JPG文件路径
            是否必选可选
            注意事项toggle模式有效
            参数示例"/luadb/button_toggled.jpg"
            src_toggled =  ,

            参数含义是否为切换按钮
            数据类型boolean
            取值范围true, false
            是否必选可选
            注意事项启用后按钮将在按下/抬起状态间切换
            参数示例true
            toggle =  ,

            参数含义切换按钮初始状态
            数据类型boolean
            取值范围true按下, false抬起
            是否必选可选
            注意事项toggle模式有效
            参数示例false
            toggled =  ,

            参数含义按钮点击回调函数
            数据类型function
            取值范围格式为function(button) end的函数
            是否必选可选
            注意事项按钮被点击时调用
            参数示例function(btn) log.info("点击", btn.text) end
            onClick =  ,

            参数含义切换状态变化回调函数
            数据类型function
            取值范围格式为function(toggled, button) end的函数
            是否必选可选
            注意事项toggle模式有效
            参数示例function(state, btn) log.info("切换", state) end
            onToggle =  ,

            参数含义按钮是否可见
            数据类型boolean
            取值范围true可见, false不可见
            是否必选可选
            注意事项默认可见
            参数示例true
            visible =  ,

            参数含义按钮是否启用
            数据类型boolean
            取值范围true启用, false禁用
            是否必选可选
            注意事项禁用时不响应触摸事件
            参数示例true
            enabled =  ,
        }
数据类型table
取值范围参数含义中规定的参数
是否必选
注意事项必须包含位置和尺寸参数

返回值

local button_component = exeasyui.Button(opts)

button_component

含义说明:按钮组件对象
数据类型:table
取值范围:包含drawhandleEvent等方法的组件对象
注意事项:需要调用exeasyui.add添加到渲染队列
返回示例:button_object

示例

-- 创建文本按钮
local btn = exeasyui.Button({
    x = 50, y = 50, w = 100, h = 36,
    text = "确定",
    bgColor = exeasyui.COLOR_BLUE,
    textColor = exeasyui.COLOR_WHITE,
    onClick = function(button)
        log.info("按钮被点击", button.text)
    end
})

-- 创建图片按钮
local imgBtn = exeasyui.Button({
    x = 160, y = 50, w = 64, h = 64,
    src = "/luadb/icon.jpg",
    src_pressed = "/luadb/icon_pressed.jpg",
    toggle = true,
    onToggle = function(state)
        log.info("切换状态", state)
    end
})

exeasyui.add(btn)
exeasyui.add(imgBtn)
4.2.3.1 Button:setText(newText)

功能

设置按钮显示的文本。

参数

newText

参数含义:新的按钮文本
数据类型:string
是否必选:是
取值范围:任意字符串
注意事项:仅文本按钮有效
参数示例:"新文本"

返回值

示例

local btn = exeasyui.Button({x=10, y=10, w=100, h=36, text="原始文本"})
btn:setText("更新后的文本")

4.2.4 exeasyui.ProgressBar(opts)

功能

创建进度条组件。

参数

opts

参数含义进度条配置参数表
数据类型table
是否必选
取值范围包含以下子参数
        {
            参数含义进度条左上角X坐标
            数据类型number
            取值范围0到屏幕宽度
            是否必选
            注意事项必须为整数
            参数示例10
            x =  ,

            参数含义进度条左上角Y坐标
            数据类型number
            取值范围0到屏幕高度
            是否必选
            注意事项必须为整数
            参数示例10
            y =  ,

            参数含义进度条宽度
            数据类型number
            取值范围大于0的整数
            是否必选
            注意事项必须为整数
            参数示例200
            w =  ,

            参数含义进度条高度
            数据类型number
            取值范围大于0的整数
            是否必选
            注意事项必须为整数
            参数示例24
            h =  ,

            参数含义进度条初始进度
            数据类型number
            取值范围0到100的数值
            是否必选可选
            注意事项默认0
            参数示例50
            progress =  ,

            参数含义是否显示百分比
            数据类型boolean
            取值范围true显示, false不显示
            是否必选可选
            注意事项默认显示
            参数示例true
            showPercentage =  ,

            参数含义自定义进度文本
            数据类型string
            取值范围任意字符串
            是否必选可选
            注意事项设置后覆盖百分比显示
            参数示例"下载中..."
            text =  ,

            参数含义文本大小
            数据类型number
            取值范围大于0的整数
            是否必选可选
            注意事项默认使用系统字体大小
            参数示例12
            textSize =  ,

            参数含义背景颜色
            数据类型number
            取值范围第三章常量解释中的3.1-3.17章节中的颜色常量或其他16位RGB565颜色值
            是否必选可选
            注意事项不设置时根据主题自动选择
            参数示例exeasyui.COLOR_GRAY
            backgroundColor =  ,

            参数含义进度条颜色
            数据类型number
            取值范围第三章常量解释中的3.1-3.17章节中的颜色常量或其他16位RGB565颜色值
            是否必选可选
            注意事项不设置时根据主题自动选择
            参数示例exeasyui.COLOR_BLUE
            progressColor =  ,

            参数含义边框颜色
            数据类型number
            取值范围第三章常量解释中的3.1-3.17章节中的颜色常量或其他16位RGB565颜色值
            是否必选可选
            注意事项不设置时根据主题自动选择
            参数示例exeasyui.COLOR_WHITE
            borderColor =  ,

            参数含义文本颜色
            数据类型number
            取值范围第三章常量解释中的3.1-3.17章节中的颜色常量或其他16位RGB565颜色值
            是否必选可选
            注意事项不设置时根据主题自动选择
            参数示例exeasyui.COLOR_WHITE
            textColor =  ,

            参数含义进度条是否可见
            数据类型boolean
            取值范围true可见, false不可见
            是否必选可选
            注意事项默认可见
            参数示例true
            visible =  ,

            参数含义进度条是否启用
            数据类型boolean
            取值范围true启用, false禁用
            是否必选可选
            注意事项进度条不响应触摸事件
            参数示例true
            enabled =  ,
        }
数据类型table
取值范围参数含义中规定的参数
是否必选
注意事项必须包含位置和尺寸参数

返回值

local progressbar_component = exeasyui.ProgressBar(opts)

progressbar_component

含义说明:进度条组件对象
数据类型:table
取值范围:包含drawhandleEventsetProgress等方法的组件对象
注意事项:需要调用exeasyui.add添加到渲染队列
返回示例:progressbar_object

示例

-- 创建进度条
local progress = exeasyui.ProgressBar({
    x = 10, y = 350,
    w = 300, h = 24,
    progress = 0,
    progressColor = exeasyui.COLOR_BLUE,
    text = "初始化..."
})

exeasyui.add(progress)

-- 动态更新进度
for i = 0, 100, 10 do
    progress:setProgress(i)
    progress:setText("下载中 " .. i .. "%")
    sys.wait(500)
end

progress:setText("完成!")
4.2.4.1 ProgressBar:setProgress(value)

功能

设置进度条的当前进度值。

参数

value

参数含义:进度值
数据类型:number
是否必选:是
取值范围:0100的数值
注意事项:会自动限制在0-100范围内,超出范围会自动修正
参数示例:75

返回值

示例

local progress = exeasyui.ProgressBar({x=10, y=10, w=200, h=24, progress=0})
progress:setProgress(50) -- 设置进度为50%
-- 进度值会自动限制在0-100范围内
progress:setProgress(150) -- 实际进度为100
progress:setProgress(-10) -- 实际进度为0
4.2.4.2 ProgressBar:getProgress()

功能

获取进度条的当前进度值。

参数

返回值

local progress_value = progress:getProgress()

progress_value

含义说明:当前进度值
数据类型:number
取值范围:0100的数值
注意事项:返回的是实际设置的进度值,不是估算值
返回示例:50

示例

local progress = exeasyui.ProgressBar({ x = 10, y = 10, w = 200, h = 24, progress = 30 })
local currentProgress = progress:getProgress() -- 返回30
log.info("当前进度", currentProgress .. "%")

-- 在循环中监控进度
for i = 0, 100, 10 do
    progress:setProgress(i)
    sys.wait(200)
    local current = progress:getProgress()
    log.info("进度更新", current .. "%")
end
4.2.4.3 ProgressBar:setText(text)

功能

设置进度条显示的文本内容。

参数

text

参数含义:显示的文本内容
数据类型:string
是否必选:是
取值范围:任意字符串
注意事项:设置自定义文本后会覆盖百分比显示,设置为nil或空字符串可恢复百分比显示
参数示例:"下载中..."

返回值

示例

local progress = exeasyui.ProgressBar({ x = 10, y = 10, w = 200, h = 24, progress = 0 })

-- 设置自定义文本
progress:setText("初始化...")
progress:setProgress(0)

-- 更新进度和文本
progress:setProgress(25)
progress:setText("下载文件...")

progress:setProgress(50)
progress:setText("处理数据...")

progress:setProgress(75)
progress:setText("完成中...")

progress:setProgress(100)
progress:setText("完成!")

-- 恢复显示百分比
progress:setText(nil)    -- 或 progress:setText("")
progress:setProgress(50) -- 现在会显示"50%"

4.2.5 exeasyui.MessageBox(opts)

功能

创建消息框组件,包含标题、消息文本和按钮组。

参数

opts

参数含义消息框配置参数表
数据类型table
是否必选
取值范围包含以下子参数
        {
            参数含义消息框左上角X坐标
            数据类型number
            取值范围0到屏幕宽度
            是否必选可选
            注意事项不设置时默认居中显示
            参数示例20
            x =  ,

            参数含义消息框左上角Y坐标
            数据类型number
            取值范围0到屏幕高度
            是否必选可选
            注意事项不设置时默认居中显示
            参数示例40
            y =  ,

            参数含义消息框宽度
            数据类型number
            取值范围大于0的整数
            是否必选可选
            注意事项默认280
            参数示例280
            w =  ,

            参数含义消息框高度
            数据类型number
            取值范围大于0的整数
            是否必选可选
            注意事项默认160
            参数示例160
            h =  ,

            参数含义消息框标题
            数据类型string
            取值范围任意字符串
            是否必选可选
            注意事项默认"Info"
            参数示例"提示"
            title =  ,

            参数含义消息框内容文本
            数据类型string
            取值范围任意字符串
            是否必选可选
            注意事项默认空字符串
            参数示例"操作成功!"
            message =  ,

            参数含义是否启用自动换行
            数据类型boolean
            取值范围true启用, false禁用
            是否必选可选
            注意事项默认启用
            参数示例true
            wordWrap =  ,

            参数含义文本大小
            数据类型number
            取值范围大于0的整数
            是否必选可选
            注意事项默认使用系统字体大小
            参数示例12
            textSize =  ,

            参数含义边框颜色
            数据类型number
            取值范围第三章常量解释中的3.1-3.17章节中的颜色常量或其他16位RGB565颜色值
            是否必选可选
            注意事项不设置时根据主题自动选择
            参数示例exeasyui.COLOR_WHITE
            borderColor =  ,

            参数含义文本颜色
            数据类型number
            取值范围第三章常量解释中的3.1-3.17章节中的颜色常量或其他16位RGB565颜色值
            是否必选可选
            注意事项不设置时根据主题自动选择
            参数示例exeasyui.COLOR_WHITE
            textColor =  ,

            参数含义背景颜色
            数据类型number
            取值范围第三章常量解释中的3.1-3.17章节中的颜色常量或其他16位RGB565颜色值
            是否必选可选
            注意事项不设置时根据主题自动选择
            参数示例exeasyui.COLOR_BLACK
            bgColor =  ,

            参数含义按钮文本数组
            数据类型table
            取值范围包含按钮文本字符串的数组
            是否必选可选
            注意事项不设置默认为{"OK"}显示OK按钮
            参数示例{"确定", "取消"}
            buttons =  ,

            参数含义按钮点击回调函数
            数据类型function
            取值范围格式为function(button_text) end的函数
            是否必选可选
            注意事项点击按钮时调用参数为按钮文本
            参数示例function(btnText) log.info("点击", btnText) end
            onResult =  ,

            参数含义消息框是否可见
            数据类型boolean
            取值范围true可见, false不可见
            是否必选可选
            注意事项默认可见
            参数示例true
            visible =  ,

            参数含义消息框是否启用
            数据类型boolean
            取值范围true启用, false禁用
            是否必选可选
            注意事项禁用时不响应触摸事件
            参数示例true
            enabled =  ,
        }
数据类型table
取值范围参数含义中规定的参数
是否必选
注意事项通常需要设置titlemessage和onResult参数

返回值

local messagebox_component = exeasyui.MessageBox(opts)

messagebox_component

含义说明:消息框组件对象
数据类型:table
取值范围:包含drawhandleEventshowhide等方法的组件对象
注意事项:需要调用exeasyui.add添加到渲染队列
返回示例:messagebox_object

示例

-- 创建消息框
local msgbox = exeasyui.MessageBox({
    title = "确认操作",
    message = "您确定要执行此操作吗?",
    buttons = {"确定", "取消"},
    onResult = function(btnText)
        if btnText == "确定" then
            log.info("用户点击了确定")
        else
            log.info("用户点击了取消")
        end
    end
})

exeasyui.add(msgbox)

-- 动态更新消息框内容
msgbox:setTitle("新标题")
msgbox:setMessage("新的消息内容")

-- 显示/隐藏消息框
msgbox:show()
msgbox:hide()
4.2.5.1 MessageBox:show()

功能

显示消息框。

参数

返回值

示例

local msgbox = exeasyui.MessageBox({
    title = "提示",
    message = "这是一个消息框",
    buttons = { "确定" }
})
msgbox:show()
4.2.5.2 MessageBox:hide()

功能

隐藏消息框。

参数

返回值

示例

local msgbox = exeasyui.MessageBox({
    title = "提示",
    message = "这是一个消息框",
    buttons = { "确定" }
})
msgbox:hide()
4.2.5.3 MessageBox:setTitle(title)

功能

设置消息框标题。

参数

title

参数含义:新的标题文本
数据类型:string
是否必选:是
取值范围:任意字符串
注意事项:无
参数示例:"新标题"

返回值

示例

local msgbox = exeasyui.MessageBox({ title = "原始标题", message = "内容" })
msgbox:setTitle("更新后的标题")
4.2.5.4 MessageBox:setMessage(message)

功能

设置消息框内容文本。

参数

message

参数含义:新的消息内容
数据类型:string
是否必选:是
取值范围:任意字符串
注意事项:如果启用了自动换行,会重新计算行缓存
参数示例:"新的消息内容"

返回值

示例

local msgbox = exeasyui.MessageBox({ title = "标题", message = "原始内容" })
msgbox:setMessage("更新后的内容")

4.2.6 exeasyui.CheckBox(opts)

功能

创建复选框组件。

参数

opts

参数含义复选框配置参数表
数据类型table
是否必选
取值范围包含以下子参数
        {
            参数含义复选框左上角X坐标
            数据类型number
            取值范围0到屏幕宽度
            是否必选
            注意事项必须为整数
            参数示例10
            x =  ,

            参数含义复选框左上角Y坐标
            数据类型number
            取值范围0到屏幕高度
            是否必选
            注意事项必须为整数
            参数示例10
            y =  ,

            参数含义复选框方框尺寸
            数据类型number
            取值范围大于0的整数
            是否必选可选
            注意事项默认16
            参数示例16
            boxSize =  ,

            参数含义复选框文本
            数据类型string
            取值范围任意字符串
            是否必选可选
            注意事项显示在复选框右侧的说明文字
            参数示例"同意协议"
            text =  ,

            参数含义复选框文本颜色
            数据类型number
            取值范围第三章常量解释中的3.1-3.17章节中的颜色常量或其他16位RGB565颜色值
            是否必选可选
            注意事项不设置时根据主题自动选择
            参数示例exeasyui.COLOR_WHITE
            textColor =  ,

            参数含义复选框边框颜色
            数据类型number
            取值范围第三章常量解释中的3.1-3.17章节中的颜色常量或其他16位RGB565颜色值
            是否必选可选
            注意事项不设置时根据主题自动选择
            参数示例exeasyui.COLOR_WHITE
            borderColor =  ,

            参数含义复选框背景颜色
            数据类型number
            取值范围第三章常量解释中的3.1-3.17章节中的颜色常量或其他16位RGB565颜色值
            是否必选可选
            注意事项不设置时根据主题自动选择
            参数示例exeasyui.COLOR_BLACK
            bgColor =  ,

            参数含义复选框勾选颜色
            数据类型number
            取值范围第三章常量解释中的3.1-3.17章节中的颜色常量或其他16位RGB565颜色值
            是否必选可选
            注意事项不设置时根据主题自动选择
            参数示例exeasyui.COLOR_WHITE
            tickColor =  ,

            参数含义复选框初始状态
            数据类型boolean
            取值范围true选中, false未选中
            是否必选可选
            注意事项默认未选中
            参数示例false
            checked =  ,

            参数含义复选框状态变化回调函数
            数据类型function
            取值范围格式为function(checked) end的函数
            是否必选可选
            注意事项状态变化时调用
            参数示例function(state) log.info("状态", state) end
            onChange =  ,

            参数含义复选框是否可见
            数据类型boolean
            取值范围true可见, false不可见
            是否必选可选
            注意事项默认可见
            参数示例true
            visible =  ,

            参数含义复选框是否启用
            数据类型boolean
            取值范围true启用, false禁用
            是否必选可选
            注意事项禁用时不响应触摸事件
            参数示例true
            enabled =  ,
        }
数据类型table
取值范围参数含义中规定的参数
是否必选
注意事项必须包含位置参数

返回值

local checkbox_component = exeasyui.CheckBox(opts)

checkbox_component

含义说明:复选框组件对象
数据类型:table
取值范围:包含drawhandleEventsetChecked等方法的组件对象
注意事项:需要调用exeasyui.add添加到渲染队列
返回示例:checkbox_object

示例

-- 创建复选框
local checkbox = exeasyui.CheckBox({
    x = 10, y = 100,
    text = "启用功能",
    checked = false,
    onChange = function(checked)
        log.info("复选框状态", checked)
    end
})

exeasyui.add(checkbox)

-- 动态设置选中状态
checkbox:setChecked(true)

-- 切换状态
checkbox:toggle()
4.2.6.1 CheckBox:setChecked(v)

功能

设置复选框的选中状态。

参数

v

参数含义:选中状态
数据类型:boolean
是否必选:是
取值范围:true(选中), false(未选中)
注意事项:状态变化会触发onChange回调
参数示例:true

返回值

示例

local checkbox = exeasyui.CheckBox({ x = 10, y = 10, text = "选项" })
checkbox:setChecked(true)
4.2.6.2 CheckBox:toggle()

功能

切换复选框的选中状态。

参数

返回值

示例

local checkbox = exeasyui.CheckBox({ x = 10, y = 10, text = "选项" })
checkbox:toggle() -- 从未选中变为选中
checkbox:toggle() -- 从选中变为未选中

4.2.7 exeasyui.Picture(opts)

功能

创建图片显示组件,支持单图和轮播图。

参数

opts

参数含义图片配置参数表
数据类型table
是否必选
取值范围包含以下子参数
        {
            参数含义图片左上角X坐标
            数据类型number
            取值范围0到屏幕宽度
            是否必选
            注意事项必须为整数
            参数示例10
            x =  ,

            参数含义图片左上角Y坐标
            数据类型number
            取值范围0到屏幕高度
            是否必选
            注意事项必须为整数
            参数示例10
            y =  ,

            参数含义单张图片路径
            数据类型string
            取值范围有效的JPG文件路径
            是否必选单图和轮播图二选一
            注意事项与sources参数互斥
            参数示例"/luadb/image.jpg"
            src =  ,

            参数含义轮播图片路径数组
            数据类型table
            取值范围包含多个JPG文件路径的数组
            是否必选单图和轮播图二选一
            注意事项与src参数互斥
            参数示例{"/luadb/img1.jpg", "/luadb/img2.jpg", "/luadb/img3.jpg"}
            sources =  ,

            参数含义轮播初始索引
            数据类型number
            取值范围大于0的整数
            是否必选可选
            注意事项sources模式有效
            参数示例1
            index =  ,

            参数含义是否启用自动轮播
            数据类型boolean
            取值范围true启用, false禁用
            是否必选可选
            注意事项sources模式有效
            参数示例true
            autoplay =  ,

            参数含义轮播间隔时间
            数据类型number
            取值范围大于0的整数单位毫秒
            是否必选可选
            注意事项autoplay模式有效
            参数示例1000
            interval =  ,

            参数含义图片是否可见
            数据类型boolean
            取值范围true可见, false不可见
            是否必选可选
            注意事项默认可见
            参数示例true
            visible =  ,

            参数含义图片是否启用
            数据类型boolean
            取值范围true启用, false禁用
            是否必选可选
            注意事项禁用时不响应触摸事件
            参数示例true
            enabled =  ,
        }
数据类型table
取值范围参数含义中规定的参数
是否必选
注意事项必须包含位置和尺寸参数

返回值

local picture_component = exeasyui.Picture(opts)

picture_component

含义说明:图片组件对象
数据类型:table
取值范围:包含drawhandleEventnextprev等方法的组件对象
注意事项:需要调用exeasyui.add添加到渲染队列
返回示例:picture_object

示例

-- 创建单张图片
local pic1 = exeasyui.Picture({
    x = 10, y = 250,
    src = "/luadb/photo.jpg"
})

-- 创建轮播图
local pic2 = exeasyui.Picture({
    x = 120, y = 250,
    sources = {"/luadb/slide1.jpg", "/luadb/slide2.jpg", "/luadb/slide3.jpg"},
    autoplay = true,
    interval = 2000
})

exeasyui.add(pic1)
exeasyui.add(pic2)

-- 手动控制轮播
pic2:next()  -- 下一张
pic2:prev()  -- 上一张
pic2:play()  -- 开始自动播放
pic2:pause() -- 暂停自动播放

-- 动态设置图片源
pic2:setSources({"/luadb/new1.jpg", "/luadb/new2.jpg"})
4.2.7.1 Picture:setSources(list)

功能

设置轮播图片源列表。

参数

list

参数含义:图片路径数组
数据类型:table
是否必选:是
取值范围:包含多个JPG文件路径的数组
注意事项:会重置当前轮播索引到第一张
参数示例:{"/luadb/img1.jpg", "/luadb/img2.jpg"}

返回值

示例

local pic = exeasyui.Picture({ x = 10, y = 10 })
pic:setSources({ "slide1.jpg", "slide2.jpg", "slide3.jpg" })
4.2.7.2 Picture:next()

功能

切换到下一张图片。

参数

返回值

示例

local pic = exeasyui.Picture({
    x = 10,
    y = 10,
    sources = { "/luadb/1.jpg", "/luadb/2.jpg", "/luadb/3.jpg" }
})
pic:next() -- 显示2.jpg
4.2.7.3 Picture:prev()

功能

切换到上一张图片。

参数

返回值

示例

local pic = exeasyui.Picture({
    x = 10,
    y = 10,
    sources = { "/luadb/1.jpg", "/luadb/2.jpg", "/luadb/3.jpg" },
    index = 2
})
pic:prev() -- 显示1.jpg
4.2.7.4 Picture:play()

功能

开始自动轮播。

参数

返回值

示例

local pic = exeasyui.Picture({
    x = 10,
    y = 10,
    sources = { "/luadb/1.jpg", "/luadb/2.jpg", "/luadb/3.jpg" },
    autoplay = false
})
pic:play() -- 开始自动轮播
4.2.7.5 Picture:pause()

功能

暂停自动轮播。

参数

返回值

示例

local pic = exeasyui.Picture({
    x = 10,
    y = 10,
    sources = { "/luadb/1.jpg", "/luadb/2.jpg", "/luadb/3.jpg" },
    autoplay = true
})
pic:pause() -- 暂停自动轮播

五、产品支持说明

  1. lcd 需要硬件支持, 请确认你的设备有 lcd 屏幕接口,可以查看选型手册对应型号及固件是否支持 lcd 功能或 lcd 库以及 tp 库
  2. 支持 SPI QSPI RGB 等多种接口的 lcd 屏幕, 取决于具体的硬件
  3. 对于 Air780EHM/EGH/EHV/Air8000 系列, 如果开启 JPG 硬件解码, JPG 图片的长宽都需要是 16 的倍数, 否则会出现画面拉伸的现象