Open3d GUI 之对话框

news2024/11/18 17:41:48

文章目录

    • 对话框
    • 关闭对话框
    • 文件对话框

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

对话框

open3d中的对话框用gui.Dialog来实现,但这个对话框其实只有个框,并没有对话,需要人为地进行布局规划。

如果单纯地希望演示一下对话框,那么只需

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

app.initialize()
win = app.create_window("Dialog Test", 600, 200)
dlg = gui.Dialog("Open3d dialog test")
dlg.add_child(gui.Button("OK"))
win.show_dialog(dlg)

app.run()

如下图所示那个OK的按钮就在对话框中,但是这个按钮并没有封装任何方法,所以对话框也只能孤零零地在窗口中间,动弹不得,甚至关都关不掉。

在这里插入图片描述

关闭对话框

为了动态展示对话框的弹出和关闭功能,需要现在窗口中封装一个可以打开对话框的按钮

app.initialize()
win = app.create_window("Dialog Test", 600, 300)
btn = gui.Button("open Dialog")
win.add_child(btn)
btn.set_on_clicked(btn_open_dialog)

def btn_open_dialog():
    dlg = gui.Dialog("Dialog Test")
    close = gui.Button("Close")
    close.set_on_clicked(btn_close_dialog)
    dlg.add_child(close)
    win.show_dialog(dlg)

def btn_close_dialog():
    win.close_dialog()
    pass

app.run()

效果如下

在这里插入图片描述

由于无论是窗口还是对话框,都未作布局上的调整,所以open Dialog按钮覆盖了整个窗口,而Close按钮也是完全覆盖了对话框。但二者的功能被很好地体现出来,点击窗口中的按钮弹出对话框,点击对话框中的按钮,对话框被关闭。

文件对话框

在日常使用中,对话框出现最多的场景就是打开文件,这个对话框至少要包括一个用以显示文件的列表。而open3d中也提供了文件对话框,尽管体验一般,但无论是打开还是保存文件,都应付得来。

FileDialog在初始化时,共有三个输入参数,分别表示对话框的模式、窗口名称以及风格。

其中,对话框模式共有三种

  • OPEN 打开文件
  • OPEN_DIR 打开文件夹
  • SAVE 保存文件

另外,和普通的对话框不同,文件对话框默认载入了两个按钮,分别通过set_on_doneset_on_cancel来挂载回调函数。

以打开文件夹为例,由于其功能就是打开文件,故可通过add_filter来选择文件类别,示例如下

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

app.initialize()

win = app.create_window("Dialog Test", 600, 300)
def btn_cancel():
    win.close_dialog()

def btn_done(fName):
    print(fName)
    win.close_dialog()

def btn_open_dialog():
    dlg = gui.FileDialog(gui.FileDialog.OPEN,
        "Dialog Test", win.theme)
    dlg.add_filter(".pcd", "Point Cloud Data files (.pcd)")
    dlg.set_on_cancel(btn_cancel)
    dlg.set_on_done(btn_done)
    win.show_dialog(dlg)

btn = gui.Button("open Dialog")
win.add_child(btn)
btn.set_on_clicked(btn_open_dialog)
app.run()

效果如下

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1362998.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

完美版视频网站模板 – 苹果CMS v10大橙子vfed主题

源码下载: https://download.csdn.net/download/m0_66047725/88700504 这次提供的大橙子 vfed 模板 已经完美,只去除了授权验证和正版主题神秘后门,不影响任何功能体验性。主题优化:全站响应式自带主题设置面板自带联盟资源库大全…

《MySQL系列-InnoDB引擎06》MySQL锁介绍

文章目录 第六章 锁1 什么是锁2 lock与latch3 InnoDB存储引擎中的锁3.1 锁的类型3.2 一致性非锁定读3.3 一致性锁定读3.4 自增长与锁3.5 外键和锁 4 锁的算法4.1 行锁的三种算法4.2 解决Phantom Problem 5 锁问题5.1 脏读5.2 不可重复读5.3 丢失更新 6 阻塞7 死锁 第六章 锁 开…

【亚马逊云科技】使用Helm 3为Amazon EKS部署Prometheus+Grafana监控平台

文章目录 1. 创建Kubernetes命名空间2. 添加Prometheus社区helm chart3. 安装prometheus4. 检查Prometheus Pod运行状况5. 检查Prometheus Service部署情况6. 修改服务访问端口类型7. 访问Prometheus数据收集情况8. 访问Grafana9. 设置数据源10. 查看Kubernetes各类性能可视化参…

初中数学:几何题的相关解题原则总结

一、多问类型的几何题 我们做题,应该都遇到过这类几何题目,就是,三个小问,每个小问对应一个几何图像,而且,渐渐复杂。这种题目,大多数有一个变化的条件,比如,动点、角度…

嵌入式培训机构四个月实训课程笔记(完整版)-Linux系统编程第四天-Linux管道练习题(物联技术666)

更多配套资料CSDN地址:点赞+关注,功德无量。更多配套资料,欢迎私信。 物联技术666_嵌入式C语言开发,嵌入式硬件,嵌入式培训笔记-CSDN博客物联技术666擅长嵌入式C语言开发,嵌入式硬件,嵌入式培训笔记,等方面的知识,物联技术666关注机器学习,arm开发,物联网,嵌入式硬件,单片机…

冒泡排序数据结构实验报告

实验目的: 理解冒泡排序算法的原理和基本思路。熟悉冒泡排序在实际应用中的场景和优化方法。 实验内容(实验题目与说明) 编写一个双向冒泡排序算法,即在排序过程中以交替的正、反两个方向进行遍历。若第一趟把关键字最大的记录…

【Sublime Text】| 02——常用插件安装及配置

系列文章目录 【Sublime Text】| 01——下载软件安装并注册 【Sublime Text】| 02——常用插件安装及配置 失败了也挺可爱,成功了就超帅。 文章目录 1. 汉化2. 更换颜色主题3. 更改编码插件—ConvertToUTF84. 对齐插件—Alignment5. 括号高亮插件—BracketHighligh…

亲,你相信数据吗?

对于这个问题,我们首先要看一下数据的属性,数据本身是中性的,只是信息的一个载体,从这个属性定义来看,我们是不能盲目相信或者不相信数据的。相不相信数据,其实是数据可靠性的问题,而数据可靠性…

网络安全红队常用的攻击方法及路径

一、信息收集 收集的内容包括目标系统的组织架构、IT资产、敏感信息泄露、供应商信息等各个方面,通过对收集的信息进行梳理,定位到安全薄弱点,从而实施下一步的攻击行为。 域名收集 1.备案查询 天眼查爱企查官方ICP备案查询 通过以上三个…

与Anders Hejlsberg一起深入TypeScript - BDL2011

TypeScript是JavaScript的类型化超集,编译成纯JavaScript。与TypeScript的创建者Anders Hejlsberg坐下来讨论你所有的问题,并讨论TypeScript设计理念和生态发展! 视频地址: https://mp.weixin.qq.com/s?__bizMzU3NjM0NjY0OQ&mid224748…

[SAP ABAP] ABAP基础语法

ABAP(Advanced Business Application Programming)是一种编程语言,用于SAP软件的开发和定制 SAP ABAP是一种高级语言,主要用于在SAP平台上为大型企业和金融机构开发企业应用程序 1. ABAP基本语法结构 ABAP源程序由注释和ABAP语句组成,其中…

linux centos 部署 jenkins

一、试了用容器部署,不行。(建议别用容器部署) 二、直接部署在主机上 1、安装java环境 yum install java-11-openjdk-devel # 检查 java -version # 打印 [rootiZwz9a99mctbkabkh2imhdZ init.d] java -version openjdk version "11.0.21" 2023-10-17 L…

用HTML的原生语法实现两个div子元素在同一行中排列

代码如下&#xff1a; <div id"level1" style"display: flex;"><div id"level2-1" style"display: inline-block; padding: 10px; border: 1px solid #ccc; margin: 5px;">这是第一个元素。</div><div id"…

ThinkPHP5多小区物业管理系统源码(支持多小区)

基于 ThinkPHP5 Bootstrap 倾力打造的多小区物业 管理系统源码&#xff0c;操作简单&#xff0c;功能完善&#xff0c;用户体验良好 开发环境PHP7mysql 安装步骤: 1.新建数据库db_estate,还原数据db_estate.sql 2.修改配置文件&#xff1a;application/database.php 3.运…

解决java接口使用spring-validation验证入参类型为List校验不生效的问题

由于 List 是接口,无法直接用于参数验证,但可以通过实现类重写 List 接口,把此实现类作为校验dto即可 dto标记: 一、直接使用 List 入参类型,不生效示例: @ApiOperation(value = "公共测试接口")@PostMapping("/testPublicApi")public CommonResult&…

IDEA TODO

今天记录一个 IDEA 工具的小技巧&#xff0c; TODO。比如下班前有一个小功能没完善好&#xff0c;此时可以在响应代码上加上 TODO 注解&#xff0c; //密码比对 // TODO 后期需要进行md5加密&#xff0c;然后再进行比对 password DigestUtils.md5DigestAsHex(password.getByt…

Linux内核--网络协议栈(一)Socket通信原理和实例讲解

目录 一、引言 二、Socket ------>2.1、socket编程 ------>2.2、Socket的创建 三、收发数据 四、断开连接 五、删除套接字 六、网络 IO 一、引言 本章开始进入linux内核中网络部分的学习,先简单介绍一下socket套接字 二、Socket 一个数据包经由应用程序产生…

系列七、Typora安装 配置

一、安装 1.1、下载安装包 我分享的链接&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1K5DjV_xhCH5WGiiEHlNQVQ?pwdyyds 提取码&#xff1a;yyds 1.2、安装 无脑下一步&#xff0c;下一步即可。 二、Typora中设置插入的图片左对齐 2.1、背景 往Typora中插入图…

FineBI实战(2):案例架构说明及数据准备

1 系统架构 基于MySQL搭建数据仓库基于Kettle进行数据处理帆软FineBI基于MySQL搭建的数据仓库进行数据分析 2 数据流程图 通过Kettle将MySQL业务系统数据库中&#xff0c;将数据抽取出来&#xff0c;然后装载到MySQL数据仓库中。编写SQL脚本&#xff0c;对MySQL数据仓库中的数…

【MySQL】视图,外连接内连接子查询简单介绍及面试笔试案例题

目录 一 视图 1.1视图是什么 1.2 创建视图 1.3 查看视图(两种) 1.4 修改视图(两种) 1.5 删除视图 二 外连接&内连接&子查询介绍 2.1 外连接 2.2 内连接 2.3 子查询 三 外连接&内连接&子查询案例 3.1 了解表结构与数据 3.2 案例题目 四 思维导图…