Open3d基础控件

Open3d快速上手💎点云对象详解

九种控件

根据控件的使用难度和功能的复杂度,这里挑选出九种最简单,同时使用最为频繁的九种控件

入门控件备注输入参数
Label文本标签
TextEdit文本输入框
Button按钮
Checkbox单选框
Combobox下拉选框
Slider数字滚动条Slider.Type
VectorEdit向量编辑框
NumberEdit数字编辑框
ToggleSwitch开关

其中,大部分控件的输入参数为控件上显示出来的文本,这些控件都可以通过外挂函数的方式来添加交互动作。

Combobox为下拉选框,下拉选框的内容通过add_item来添加。

Slider为滚动条,创建之后,其初始值默认为0,取值范围是负无穷到正无穷,通过set_limits来添加最大值和最小值。

代码展示

为了集中展示这些控件的功能,将其写入一个字典中,并为每个控件分配一个控件,向命令行输出一些反馈。

import open3d as o3d
import open3d.visualization.gui as gui
import open3d.visualization.rendering as rendering
app = gui.Application.instance
app.initialize()

# 准备演示的九种控件
CTRLS =  {
    "label" : gui.Label("label"),
    "text" : gui.TextEdit(),
    "button" : gui.Button("button"),
    "check" : gui.Checkbox("checkbox"),
    "combo" : gui.Combobox(),
    "slider" : gui.Slider(gui.Slider.Type(0)),
    "vector" : gui.VectorEdit(),
    "number" : gui.NumberEdit(gui.NumberEdit.Type(0)),
    "toggle" : gui.ToggleSwitch("ToggleSwitch")
}

# 为combobox添加内容
for i in range(5):
    CTRLS["combo"].add_item(str(i))

# 为 slider 添加取值范围
CTRLS["slider"].set_limits(0,20)

win = app.create_window("Open3d Test", 500, 100)
vert = gui.Vert(0, gui.Margins(2,2,2,2))
win.add_child(vert)         # 将布局加载到窗口

for key in CTRLS:
    vert.add_child(CTRLS[key])

app.run()

效果如下

在这里插入图片描述

这九种控件,除了Label之外,均可注册回调函数,在发生动作时执行

注册函数

接下来为这些控件分别注册一些函数,其基础函数如下

控件函数执行条件回调函数参数
TextEditset_on_value_changed敲击回车控件文本
Buttonset_on_clicked点击按钮
Checkbox单选框点击单选框状态
Combobox下拉选框值发生变动选中的item序号和值
Slider数字滚动条位置发生变动当前值
VectorEdit向量编辑框敲击回车控件向量
NumberEdit数字编辑框值发生变化控件的值
ToggleSwitch开关点击开关状态

其演示函数如下,可写在app.run()之前。

# TextEdit的测试函数,其输入为改动后的内容
def text_test(txt):
    print(CTRLS["text"].text_value)

CTRLS["text"].set_on_value_changed(print)

# VectorEdit的测试函数,输入为改动后的向量
def vector_test(vec):
    print(CTRLS["vector"].vector_value)

CTRLS["vector"].set_on_value_changed(vector_test)

# Slider的测试函数,输入为改动后的值
def slider_test(val):
    print(CTRLS["slider"].int_value)
    pass

CTRLS["slider"].set_on_value_changed(slider_test)

# val 和 ind 分别为combo选中的位置和选中的值
def combo_test(val, ind):
    print(CTRLS["combo"].selected_index)
    print(CTRLS["combo"].selected_text)

CTRLS["combo"].set_on_selection_changed(combo_test)

# Checkbox的测试函数,chk为选中后的值
def check_test(chk):
    print(CTRLS["check"].checked)

CTRLS["check"].set_on_checked(check_test)

def toggle_test(isOn):
    # 当打开toggle时,is_on为True,否则为False
    print(CTRLS["toggle"].is_on)    

CTRLS["toggle"].set_on_clicked(toggle_test)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

微小冷

请我喝杯咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值