函数:widget.find 查找控件

优质
小牛编辑
135浏览
2023-12-01

函数功能: 根据属性组合查找控件

函数方法

wid,tab = widget.find(tb)

参数类型必填说明
tb.idstring控件 ID,可以使用 IDE 的控件节点进行获取
tb.textstring文本,可以使用 IDE 的控件节点进行获取
tb.typestring类型,可以使用 IDE 的控件节点进行获取
tb.descstring描述,可以使用 IDE 的控件节点进行获取
tb.pathstring路径,可以使用 IDE 的控件节点进行获取
tb.rulenumber默认为 0 - 完全匹配,1 - 部分匹配,2 - 开头匹配,
3 - 结尾匹配,仅支持 text、type、desc 参数
tb.long-clickablestring是否可以长按,false - 不可以长按,ture - 可以长按,
仅支持 v1.0.1 及其以上版本
tb.clickablestring是否可以点击,fasle - 不可点击,true - 可以点击,
仅支持 v1.0.1 及其以上版本
tb.scrollablestring是否可以滚动,false - 不可以滚动,true - 可以滚动,
仅支持 v1.0.1 及其以上版本
tb.editablestring是否可以编辑,false - 不可以编辑,ture - 可以编辑,
仅支持 v1.0.1 及其以上版本
tb.checkablestring是否可以选中,false - 不可以选中,true - 可以选中,
仅支持 v1.0.1 及其以上版本
tb.whichnumber不写默认为 1,指定第几个控件,
仅支持 v1.0.2 及其以上版本客户端
返回值类型说明
widuserdata/nil查找成功则返回控件对象,失败返回空
tabtable返回 id、text、type、desc 等包含 tb 的所有信息,
仅支持 v1.0.3 及其以上版本客户端

函数用例

--除控件函数外请勿将其他积木编程函数用于触动精灵,同理请勿将触动精灵函数用于积木编程
mSleep(1000)
wid,tab =widget.find({["text"]="浏览器"})
if wid ~= nil then
    mSleep(1000)
    toast("控件已找到")
    mSleep(1000)
    --点击控件
    widget.click(wid)
    for k,v in pairs(tab) do
        toast(k .. ":" .. (type(v) == "boolean" and (v and "true" or "false") or v),5)
        mSleep(2000)
    end
else
    mSleep(1000)
    toast("控件未找到",5)
    mSleep(5000)
end

注意事项

  • 使用此函数不要使用 widget 做变量,否则会导致报错。

  • 如果要调多个此控件的控件对象,需要按照顺序进行调用,同时返回多个控件对象只会保存最后一个控件对象,可以理解为控件对象保存位置是只有一个,返回多个对象会覆盖之前的控件对象。

函数:widget.desc 根据描述属性查找控件

函数功能: 根据描述属性查找控件

函数方法

wid= widget.desc(desc,rule);

wid= widget.desc(desc,{rule,which});

参数类型必填说明
descstring要查找的描述信息,可以使用 IDE 的控制节点进行获取
rulenumber不写默认为 0 - 完全匹配 ,1 - 部分匹配,2 - 完全匹配,
3 - 开头匹配,4 - 结尾匹配
whichnumber不写默认为 1,指定第几个控件,
仅支持 v1.0.2 及其以上版本客户端

函数用例

--在显示积木编程图标的页面运行
--除控件函数外请勿将其他积木编程函数用于触动精灵,同理请勿将触动精灵函数用于积木编程
mSleep(1000)
desc = "积木编程"
wid = widget.desc(desc,1)
--wid = widget.desc(desc,{["rule"]=1,["which"]=1})
if wid ~= nil then
    mSleep(1000)
    toast("控件已找到")
    mSleep(1000)
    --点击控件
    widget.click(wid)
else
    mSleep(1000)
    toast("控件未找到",5)
    mSleep(5000)
end

注意事项

  • 使用此函数不要使用 widget 做变量,否则会导致报错。

  • 如果要调多个此控件的控件对象,需要按照顺序进行调用,同时返回多个控件对象只会保存最后一个控件对象,可以理解为控件对象保存位置是只有一个,返回多个对象会覆盖之前的控件对象。

函数:widget.id 根据属性查找控件

函数功能: 根据属性查找控件

函数方法

wid = widget.id(id)

wid = widget.id(id,{which})

参数类型必填说明
idstring要查找的控件 ID,可以使用 IDE 的控制节点进行获取
whichnumber不写默认为 1,指定第几个控件,
仅支持 v1.0.2 及其以上版本客户端
返回值类型说明
widuserdata/nil查找成功则返回控件对象,失败返回空

函数用例

--脚本页面运行,找右上角的新建脚本按钮
--除控件函数外请勿将其他积木编程函数用于触动精灵,同理请勿将触动精灵函数用于积木编程
mSleep(1000)
id = "com.play4u.luabox:id/iv_script_new"
wid = widget.id(id)
--wid = widget.id(id,{["which"]=1})
if wid ~= nil then
    mSleep(1000)
    toast("控件已找到")
    mSleep(1000)
    --点击控件
    widget.click(wid)
else
    mSleep(1000)
    toast("控件未找到",5)
    mSleep(5000)
end

注意事项

  • 使用此函数不要使用 widget 做变量,否则会导致报错。

  • 如果要调多个此控件的控件对象,需要按照顺序进行调用,同时返回多个控件对象只会保存最后一个控件对象,可以理解为控件对象保存位置是只有一个,返回多个对象会覆盖之前的控件对象。

函数:widget.text 根据文本属性查找控件

函数功能: 根据文本属性查找控件

函数方法

wid = widget.text(text,rule)

wid = widget.text(text,{rule,which})

参数类型必填说明
textstring文本属性,可以使用 IDE 的控件节点进行获取
rulenumber不写默认为 0 - 完全匹配 ,1 - 部分匹配,2 - 开头匹配,3 - 结尾匹配
whichnumber不写默认为 1,指定第几个控件,仅支持 v1.0.2 及其以上版本客户端
返回值类型说明
widuserdata/nil查找成功则返回控件对象,失败返回空

函数用例

--在脚本页面,找左上角的脚本文字
--除控件函数外请勿将其他积木编程函数用于触动精灵,同理请勿将触动精灵函数用于积木编程
mSleep(1000)
text="脚本"
wid = widget.text(text,1)
--wid = widget.text(text,1,{["which"]=1})
if wid ~= nil then
    mSleep(1000)
    toast("控件已找到")
    mSleep(1000)
    --点击控件
    widget.click(wid)
else
    mSleep(1000)
    toast("控件未找到",5)
    mSleep(5000)
end

注意事项

  • 使用此函数不要使用 widget 做变量,否则会导致报错。
  • 如果要调多个此控件的控件对象,需要按照顺序进行调用,同时返回多个控件对象只会保存最后一个控件对象,可以理解为控件对象保存位置是只有一个,返回多个对象会覆盖之前的控件对象。

函数:widget.region 获取控件的区域属性

函数功能: 获取控件区域坐标范围

函数方法

x1,y1,x2,y2 = widget.region(wid)

参数类型必填说明
widuserdata控件对象
返回值类型说明
x1string区域左上角横坐标,找不到返回 nil
y1string区域左上角纵坐标,找不到返回 nil
x2string区域右下角横坐标,找不到返回 nil
y2string区域有下级角纵坐标,找不到返回 nil

函数用例

--在脚本页面,找左上角的脚本文字
--除控件函数外请勿将其他积木编程函数用于触动精灵,同理请勿将触动精灵函数用于积木编程
mSleep(1000)
wid = widget.find({["id"]="com.play4u.luabox:id/iv_script_new"})
if wid ~= nil then
x1,y1,x2,y2 = widget.region(wid)
if x1 ~= nil then
    event.tap(x1,y1);
else
    mSleep(1000)
    toast("区域获取为空",5)
    mSleep(5000)
end
else
    mSleep(1000)
    toast("控件未找到",5)
    mSleep(5000)
end

注意事项

  • 使用此函数不要使用 widget 做变量,否则会导致报错。

  • 如果要调多个此控件的控件对象,需要按照顺序进行调用,同时返回多个控件对象只会保存最后一个控件对象,可以理解为控件对象保存位置是只有一个,返回多个对象会覆盖之前的控件对象。

函数:widget.longclickable 判断控件是否可以长按

函数功能: 判断控件获取是否可以长按

函数方法

flag = widget.longclickable(wid)

参数类型必填说明
widuserdata控件对象
返回值类型说明
flagbooleantrue - 可以长按,false -不可以长按

函数用例

--在脚本页面,右上角的创建脚本按钮
--除控件函数外请勿将其他积木编程函数用于触动精灵,同理请勿将触动精灵函数用于积木编程
mSleep(1000)
wid = widget.find({["id"]="com.play4u.luabox:id/iv_script_new"})
if wid ~= nil then
    flag = widget.longclickable(wid)
    if flag then
        mSleep(1000)
        toast("此控件可以长按",5)
        mSleep(5000)  
    else
        mSleep(1000)
        toast("此控件不支持长按",5)
        mSleep(5000)  
    end
else
    mSleep(1000)
    toast("控件未找到",5)
    mSleep(5000)  
end

注意事项

  • 使用此函数不要使用 widget 做变量,否则会导致报错。

  • 如果要调多个此控件的控件对象,需要按照顺序进行调用,同时返回多个控件对象只会保存最后一个控件对象,可以理解为控件对象保存位置是只有一个,返回多个对象会覆盖之前的控件对象。

函数:widget.checkable 判断控件是否可勾选

函数功能: 判断控件是否可以勾选

函数方法

flag = widget.checkable(wid)

参数类型必填说明
widuserdata控件对象
返回值类型说明
flagbooleantrue - 可以勾选,false - 不可以勾选

函数用例

--在删除脚本页面,长按要删除的脚本可以进入此页面,全选按钮
--除控件函数外请勿将其他积木编程函数用于触动精灵,同理请勿将触动精灵函数用于积木编程
mSleep(1000)
wid = widget.find({["id"]="com.play4u.luabox:id/cb_select"})
if wid ~= nil then
    flag = widget.checkable(wid)
    if flag then
        mSleep(1000)
        toast("此控件可以勾选",5)
        mSleep(5000)  
    else
        mSleep(1000)
        toast("此控件不支持勾选",5)
        mSleep(5000)  
    end
else
    mSleep(1000)
    toast("控件未找到",5)
    mSleep(5000)  
end

注意事项

  • 使用此函数不要使用 widget 做变量,否则会导致报错。

  • 如果要调多个此控件的控件对象,需要按照顺序进行调用,同时返回多个控件对象只会保存最后一个控件对象,可以理解为控件对象保存位置是只有一个,返回多个对象会覆盖之前的控件对象。

函数:widget.scrollable 判断控件是否可滚动

函数功能: 判断控件是否可以滚动

函数方法

flag = widget.scrollable(wid)

参数类型必填说明
widuserdata控件对象
返回值类型说明
flagbooleantrue - 可以滚动,false - 不可以滚动

函数用例

--脚本界面运行
--除控件函数外请勿将其他积木编程函数用于触动精灵,同理请勿将触动精灵函数用于积木编程
mSleep(1000)
wid = widget.find({["id"]="com.play4u.luabox:id/item_rl_top"})
if wid ~= nil then
    flag = widget.scrollable(wid)
    if flag then
        mSleep(1000)
        toast("此控件可以滚动",5)
        mSleep(5000)  
    else
        mSleep(1000)
        toast("此控件不可以滚动",5)
        mSleep(5000)  
    end
else
    mSleep(1000)
    toast("控件未找到",5)
    mSleep(5000)  
end

注意事项

  • 使用此函数不要使用 widget 做变量,否则会导致报错。

  • 如果要调多个此控件的控件对象,需要按照顺序进行调用,同时返回多个控件对象只会保存最后一个控件对象,可以理解为控件对象保存位置是只有一个,返回多个对象会覆盖之前的控件对象。

函数:widget.editable 获取控件是否可以输入

函数功能: 判断控件是否可以输入

函数方法

flag = widget.editable(wid)

参数类型必填说明
widusedata控件对象
返回值类型说明
flagbooleantrue - 可以输入文字,false - 不支持输入文字

函数用例

--脚本页面 点击新建脚本按钮 输入文字
--除控件函数外请勿将其他积木编程函数用于触动精灵,同理请勿将触动精灵函数用于积木编程
mSleep(1000)
wid = widget.find({["id"]="com.play4u.luabox:id/iv_script_new"})
if wid ~= nil then
    widget.click(wid)
    mSleep(3000)
    wid1 = widget.find({["id"]="com.play4u.luabox:id/et_content"})
    --判断新建脚本页面是否打开
    if wid1 ~= nil then
        --判断是否支持输入文字
        flag = widget.editable(wid1)
        if flag then
            mSleep(1000)
            toast("此控件支持输入",5)
            mSleep(5000)
            --输入文字
            widget.setText(wid,"输入")
        else
            mSleep(1000)
            toast("此控件不支持输入",5)
            mSleep(5000)
        end
    else
        mSleep(1000)
        toast("控件未找到",5)
        mSleep(5000)
    end
else
    mSleep(1000)
    toast("控件未找到",5)
    mSleep(5000)
end

注意事项

  • 使用此函数不要使用 widget 做变量,否则会导致报错。

  • 如果要调多个此控件的控件对象,需要按照顺序进行调用,同时返回多个控件对象只会保存最后一个控件对象,可以理解为控件对象保存位置是只有一个,返回多个对象会覆盖之前的控件对象。

函数:widget.visibleToUser 控件是否可见

函数功能: 判断控件是否可见

函数方法

flag = widget.visibleToUser(wid)

参数类型必填说明
widusedata控件对象
返回值类型说明
flagbooleantrue - 可见控件,false - 不可见控件

函数用例

--脚本页面新脚本按钮
--除控件函数外请勿将其他积木编程函数用于触动精灵,同理请勿将触动精灵函数用于积木编程
mSleep(1000)
wid = widget.find({["id"]="com.play4u.luabox:id/iv_script_new"})
if wid ~= nil then
    flag = widget.visibleToUser(wid)
    if flag then
        mSleep(1000)
        toast("可见控件",5)
        mSleep(5000)    
    else
        mSleep(1000)
        toast("不可见控件",5)
        mSleep(5000)    
    end
else
    mSleep(1000)
    toast("控件未找到",5)
    mSleep(5000)    
end

注意事项

  • 使用此函数不要使用 widget 做变量,否则会导致报错。

  • 如果要调多个此控件的控件对象,需要按照顺序进行调用,同时返回多个控件对象只会保存最后一个控件对象,可以理解为控件对象保存位置是只有一个,返回多个对象会覆盖之前的控件对象。

函数:widget.enabled 判断控件是否可以激活

函数功能: 判断控件是否可以激活

函数方法

flag = widget.enabled(wid)

参数类型必填说明
widusedata控件对象
返回值类型说明
flagbooleantrue - 可以激活,false - 不可以激活

函数用例

--脚本页面运行
--除控件函数外请勿将其他积木编程函数用于触动精灵,同理请勿将触动精灵函数用于积木编程
mSleep(1000)
wid = widget.find({["id"]="com.play4u.luabox:id/iv_script_new"})
if wid ~= nil then
    flag = widget.enabled(wid)
    if flag then
        mSleep(1000)
        toast("此控件可以激活",5)
        mSleep(5000)    
    else
        mSleep(1000)
        toast("此控件不可以激活",5)
        mSleep(5000)    
    end
else
    mSleep(1000)
    toast("控件未找到",5)
    mSleep(5000)    
end

注意事项

  • 使用此函数不要使用 widget 做变量,否则会导致报错。

  • 如果要调多个此控件的控件对象,需要按照顺序进行调用,同时返回多个控件对象只会保存最后一个控件对象,可以理解为控件对象保存位置是只有一个,返回多个对象会覆盖之前的控件对象。

函数:widget.clickable 判断控件是否可点击

函数功能: 判断控件是否可以点击

函数方法

flag = widget.clickable(wid)

参数类型必填说明
widuserdata控件对象
返回值类型说明
flagbooleantrue - 可以点击,false - 无法点击

函数用例

--在脚本页面,右上角的新建脚本按钮是否可以点击
--除控件函数外请勿将其他积木编程函数用于触动精灵,同理请勿将触动精灵函数用于积木编程
mSleep(5000)
wid = widget.find({["id"]="com.play4u.luabox:id/iv_script_new"})
if wid ~= nil then
    flag  = widget.clickable(wid)
    if flag  then
        mSleep(1000)
        toast("此控件可以点击",5)
        mSleep(5000)
        --点击控件
        widget.click(wid)
    else
        mSleep(1000)
        toast("此控件不支持点击",5)
        mSleep(5000)
    end
else
    mSleep(1000)
    toast("控件未找到",5)
    mSleep(5000)
end

注意事项

  • 使用此函数不要使用 widget 做变量,否则会导致报错。

  • 如果要调多个此控件的控件对象,需要按照顺序进行调用,同时返回多个控件对象只会保存最后一个控件对象,可以理解为控件对象保存位置是只有一个,返回多个对象会覆盖之前的控件对象。

函数:widget.selected 获取控件选中状态

函数功能: 判断控件是否可以选中

函数方法

flag = widget.selected(wid)

参数类型必填说明
widuserdata控件对象
返回值类型说明
flagbooleantrue - 可以选中,false - 不可以选中

函数用例

--脚本界面运行
--除控件函数外请勿将其他积木编程函数用于触动精灵,同理请勿将触动精灵函数用于积木编程
mSleep(1000)
wid = widget.find({["id"]="com.play4u.luabox:id/item_rl_top"})
if wid ~= nil then
    flag = widget.selected(wid)
    if flag then
        mSleep(1000)
        toast("此控件可以选中",5)
        mSleep(5000)    
    else
        mSleep(1000)
        toast("此控件不可以选中",5)
        mSleep(5000)    
    end
else
    mSleep(1000)
    toast("控件未找到",5)
    mSleep(5000)    
end

注意事项

  • 使用此函数不要使用 widget 做变量,否则会导致报错。

  • 如果要调多个此控件的控件对象,需要按照顺序进行调用,同时返回多个控件对象只会保存最后一个控件对象,可以理解为控件对象保存位置是只有一个,返回多个对象会覆盖之前的控件对象。

函数:widget.checked 判断控件勾选状态

函数功能: 判断控件是否勾选

函数方法

flag = widget.checked(wid)

参数类型必填说明
widuserdata控件对象
返回值类型说明
flagbooleantrue - 已勾选,false - 未勾选

函数用例

--在删除脚本页面,全选按钮是否勾选
--除控件函数外请勿将其他积木编程函数用于触动精灵,同理请勿将触动精灵函数用于积木编程
mSleep(1000)
wid = widget.find({["id"]="com.play4u.luabox:id/cb_select"})
if wid ~= nil then
    flag = widget.checked(wid)
    if flag then
        mSleep(1000)
        toast("此控件已勾选",5)
        mSleep(5000)  
    else
        mSleep(1000)
        toast("此控件未勾选",5)
        mSleep(5000)  
    end
else
    mSleep(1000)
    toast("控件未找到",5)
    mSleep(5000)  
end

注意事项

  • 使用此函数不要使用 widget 做变量,否则会导致报错。

  • 如果要调多个此控件的控件对象,需要按照顺序进行调用,同时返回多个控件对象只会保存最后一个控件对象,可以理解为控件对象保存位置是只有一个,返回多个对象会覆盖之前的控件对象。