luatos lvgl 按键输入_输入框


UI对话框

在这一章节中,我们来熟悉一下常用的对话框

在程序中常用的有:

  • 消息输入对话框
  • 消息提示对话框

0 1、用户消息输入框

inputbox — 创建一个用于输入用户信息的对话框。

该对话框包含带有静态文本提示,

可选默认值,可选下拉选项和可选标题的输入字段。

还可以使用此方法通过传递可选参数来显示选项的下拉列表。

调用方法:


inputbox(prompts, defaults, title) ⇒ Array<String>, false
inputbox(prompts, defaults, list, title) ⇒ Array<String>, false


参数:

prompts (Array<String>) — 提示输入信息的名称数组

defaults (Array<String>) — 输入框默认值数组

list (String, Array<String>) — 包含用|分割下拉选项值字符串的数组

title (String) — 信息输入框的标题

返回值:如果用户未取消对话框,则返回值的数组。如果用户取消了对话框,则返回false。数组中返回的值将与输入字段的顺序相同

示例:


prompts = ["Name", "Age", "Gender"]
defaults = ["Enter name", "", "Male"]
list = ["", "", "Male|Female"]
title = "老顽童"
input = UI.inputbox(prompts, defaults, list, title)


上面这段示例效果如图:


luatos lvgl 按键输入_luatos lvgl 按键输入_02


0 2、消息提示框

messagebox — 创建一个包含静态文本的消息框

调用方法:


messagebox(message, type = MB_OK) ⇒ Integer


参数:

messagebox — 你要显示的消息

type — 消息框类型,常量类型

有效的消息框类型有:

MB_OK—包含“确定”按钮。

MB_OKCANCEL — 包含“确定”和“取消”按钮。

MB_ABORTRETRYIGNORE — 包含“中止”,“重试”和“忽略”按钮。

MB_YESNOCANCEL — 包含“是”,“否”和“取消”按钮。

MB_YESNO — 包含是和否按钮。

MB_RETRYCANCEL — 包含“重试”和“取消”按钮。

MB_MULTILINE — 包含和“确定”按钮

返回值可以是以下任意值:

IDOK

IDCANCEL

IDABORT

IDRETRY

IDIGNORE

IDYES

IDNO

示例:


result = UI.messagebox('是否感兴趣?', MB_YESNO)
if result == IDYES  
    UI.messagebox('关注我')
end


效果:


luatos lvgl 按键输入_UI_03


在这里还有很多的type类型,感兴趣的小伙伴可以自己试试。

0 3、UI对话框实战

我们想实现一个参数控制的正方体插件

示例

我们去之前的工具条中加上cube工具


cube_cmd = UI::Command.new("cube_tool"){
	Cube.create_cube # 矩形工具插件
}
menu.add_item cube_cmd
cube_cmd.large_icon = cube_cmd.small_icon = "lwt_plug/image/cube.png"
cube_cmd.tooltip = "矩形工具"                      
cube_cmd.status_bar_text = "这是矩形工具" 
toolbar.add_item cube_cmd


记得一定要把cube.rb路径放入files数组中加载改文件

看一下cube.rb文件:


class Cube
    def self.create_cube
		model = Sketchup.active_model
		model.start_operation('Create Cube', true)
		# 创建信息输入框
		prompts = ["长度", "宽度", "高度", "材质"]
		defaults = ["1000", "1000", "1000", "red"]
		list = ["", "", "", "red|yellow|purple"]
		input = UI.inputbox(prompts, defaults, list, "创建矩形")
		#
		if input
			vue = [input[0].to_f.mm,input[1].to_f.mm,input[2].to_f.mm]
			v = vue.find{|v| v if v==0}
			# 判断输入值是否有效,messbox提示
			res = UI.messagebox("在输入的长、宽、高中存在不合法数值", MB_OK) if v
			return if res
			group = model.active_entities.add_group
		    entities = group.entities
			points = [
				Geom::Point3d.new(0,   0,   0),
				Geom::Point3d.new(input[0].to_f.mm, 0,   0),
				Geom::Point3d.new(input[0].to_f.mm, input[1].to_f.mm, 0),
				Geom::Point3d.new(0,   input[1].to_f.mm, 0)
			]
			face = entities.add_face(points)
			face.reverse! unless face.normal.samedirection? Z_AXIS 
		    face.pushpull(input[2].to_f.mm)
		    group.material = input[-1]
		end
		
		model.commit_operation
    end

end


我们先创建一个信息输入框,可以输入长宽高及材质

判断输入的长宽高是否有效

若果存在无效值

弹出消息框

效果如图:


luatos lvgl 按键输入_luatos lvgl 按键输入_04


这样我们在工具中就运用了这两个命令

是不是觉得还挺简单的

感兴趣的小伙伴动手试试吧

感兴趣小伙伴关注我吧