用open3d GUI开发用户界面

文章目录

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

尽管open3d是一个三维数据处理库,其主页介绍中提到的功能,也都类似三维数据结构、三维数据处理算法、平面对齐重构这种专业需求,但是尽管主页没提,open3d内部起始隐藏着一个非常强大的图形界面工具,足以开发针对三维数据的界面程序。

所以本文就初步认识一下open3d的GUI工具。

窗口

import open3d as o3d
import open3d.visualization.gui as gui
import open3d.visualization.rendering as rendering

gui.Application.instance.initialize()
win = gui.Application.instance.create_window(
“Open3d Test”, 600, 350)
gui.Application.instance.run()

其中,initialize用于初始化open3d的GUI功能,如不开启,则无法创建窗口。

create_window用于创建窗口,其参数分别是窗口名、宽度、高度。在创建窗口之后,窗口会马上弹出,如下图所示,但这个窗口并不受控制。

在这里插入图片描述

只有在输入run这行之后,这个窗口才能正常拖动和缩放。

控件

在了解窗口的调用逻辑之后,按照正常的GUI教学流程,应该讲一讲最常用的控件,比如文本标签、文本输入以及按钮。

首先看一下文本标签

app = gui.Application.instance
app.initialize()
win = app.create_window("Open3d Test", 500, 100)
label = gui.Label("input")  #创建一个标签
win.add_child(label)        #将标签插入窗口
app.run()

 
 

效果如下

在这里插入图片描述

由于不能指定绝对位置,所以创建的标签被放在了最左端。如果创建多个控件,那么这些控件会叠放在一起,是不合理的。

布局

为了让控件按照我们的要求来拜访,需要用到布局,下面以Vert为例,来说明布局对控件的作用

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

label = gui.Label(“input”)
vert.add_child(label) # 将label添加到vert
txt = gui.TextEdit() #创建一个输入框
vert.add_child(txt)
btn = gui.Button(“click me”) #创建一个按钮
vert.add_child(btn)
app.run()

效果为

在这里插入图片描述

那么Vert的含义也就明确了,就是将子控件按照纵向排布的方式插入到父控件中。

事件

尽管按钮上面写了click me,但点击之后什么都不会发生,为了实践按钮的功能,可以在app.run前添加下面的代码

# 让label的内容变为txt的内容
def click():
    label.text = txt.text_value

#给按钮注册函数,即点击按钮时执行click
btn.set_on_clicked(click)

这样,在点击按钮之后,会将文本输入框中的内容添加到标签上,如图所示

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值