当前位置: 首页 > news >正文

VTK Python PyQt 监听键盘 控制 Actor 移动 变色

KeyPressInteractorStyle

在vtk 中有时我们需要监听 键盘或鼠标做一些事;

1. 创建 Actor;

Sphere = vtk.vtkSphereSource()
Sphere.SetRadius(10)mapper = vtk.vtkPolyDataMapper()
mapper.SetInputConnection(Sphere.GetOutputPort())
actor = vtk.vtkActor()
actor.SetMapper(mapper)
actor.GetProperty().SetColor(0.0, 1.0, 0.0)

2.创建 vtkRenderer vtkRenderWindow  vtkRenderWindowInteractor

ren = vtk.vtkRenderer()
renWin = vtk.vtkRenderWindow()
renWin.AddRenderer(ren)
iren = vtk.vtkRenderWindowInteractor()
iren.SetRenderWindow(renWin)

3.重写交互器 Style

class KeyPressInteractorStyle(vtk.vtkInteractorStyleTrackballCamera):def __init__(self, parent=None):self.parent = vtk.vtkRenderWindowInteractor()if (parent is not None):self.parent = parentself.AddObserver("KeyReleaseEvent", self.keyRelease)def keyRelease(self, obj, event):key = self.parent.GetKeySym()if key == 'Up':pt =  actor.GetPosition()actor.SetPosition(pt[0],pt[1]+5,pt[2])elif key == 'Down':pt =  actor.GetPosition()actor.SetPosition(pt[0],pt[1]-5,pt[2])if key == 'Left':pt =  actor.GetPosition()actor.SetPosition(pt[0]-5,pt[1],pt[2])elif key == 'Right':pt =  actor.GetPosition()actor.SetPosition(pt[0]+5,pt[1],pt[2])elif key== 'c':# 产生随机颜色r = vtk.vtkMath.Random()g = vtk.vtkMath.Random()b = vtk.vtkMath.Random()actor.GetProperty().SetColor(r, g, b)renWin.Render()
 4.添加交互器:
iren.SetInteractorStyle(KeyPressInteractorStyle(parent=iren))ren.AddActor(actor)

相关文章:

VTK Python PyQt 监听键盘 控制 Actor 移动 变色

KeyPressInteractorStyle 在vtk 中有时我们需要监听 键盘或鼠标做一些事; 1. 创建 Actor; Sphere vtk.vtkSphereSource() Sphere.SetRadius(10)mapper vtk.vtkPolyDataMapper() mapper.SetInputConnection(Sphere.GetOutputPort()) actor vtk.vtkAc…...

力扣 第 124 场双周赛 解题报告 | 珂学家 | 非常规区间合并

前言 整体评价 T4的dp解法没想到,走了一条"不归路", 这个区间合并解很特殊,它是带状态的,而且最终的正解也是基于WA的case,慢慢理清的。 真心不容易,太难了。 T1. 相同分数的最大操作数目 I 思路: 模拟 c…...

2024年华为OD机试真题-生成哈夫曼树-Java-OD统一考试(C卷)

题目描述: 给定长度为n的无序的数字数组,每个数字代表二叉树的叶子节点的权值,数字数组的值均大于等于1。请完成一个函数,根据输入的数字数组,生成哈夫曼树,并将哈夫曼树按照中序遍历输出。 为了保证输出的二叉树中序遍历结果统一,增加以下限制:二叉树节点中,左节点权…...

【实战】二、Jest难点进阶(二) —— 前端要学的测试课 从Jest入门到TDD BDD双实战(六)

文章目录 一、Jest 前端自动化测试框架基础入门二、Jest难点进阶2.mock 深入学习 学习内容来源:Jest入门到TDD/BDD双实战_前端要学的测试课 相对原教程,我在学习开始时(2023.08)采用的是当前最新版本: 项版本babel/co…...

(一)【Jmeter】JDK及Jmeter的安装部署及简单配置

JDK的安装和环境变量配置 对于Linux、Mac和Windows系统,JDK的安装和环境变量配置方法略有不同。以下是针对这三种系统的详细步骤: 对于Linux系统: 下载适合Linux系统的JDK安装包,可以选择32位或64位的版本。 将JDK的安装包放置在服务器下,创建一个新的文件夹来存储JDK,…...

HAL/LL/STD STM32 U8g2库 +I2C SSD1306/sh1106 WouoUI磁贴案例

HAL/LL/STD STM32 U8g2库 I2C SSD1306/sh1106 WouoUI磁贴案例 📍基于STM32F103C8T6 LL库驱动版本:https://gitee.com/chcsx/platform-test/tree/master/MDK-ARM🎬视频演示: WouoUI移植磁贴案例,新增确认弹窗 &#x1f…...

手机如何改自己的ip地址

在现如今的数码时代,手机已经成为人们生活中不可或缺的一部分。然而,有时候我们可能需要改变手机的IP地址来实现一些特定的需求。本文将向大家介绍如何改变手机的IP地址,帮助大家更好地应对各种网络问题。 更改手机IP地址的原因:…...

ajax函数库axios基本使用

ajax函数库Axios基本使用 简介&#xff1a;Axios 对原生的Ajax进行了封装&#xff0c;简化书写&#xff0c;快速开发。 官网&#xff1a;https://www.axios-http.cn/ Axios使用步骤 引入Axios的js文件(参考官网)使用Axios发送请求,获取相应结果 <script src"https:…...

【nginx实践连载-4】彻底卸载Nginx(Ubuntu)

步骤1&#xff1a;停止Nginx服务 打开终端&#xff08;Terminal&#xff09;。停止Nginx服务&#xff1a;sudo systemctl stop nginx步骤2&#xff1a;卸载Nginx软件包 运行以下命令卸载Nginx软件包&#xff1a;sudo apt purge nginx nginx-common nginx-core步骤3&#xff1…...

究极小白如何自己搭建一个自动发卡网站-独角数卡

首页 | 十画IOSID​shihuaid.cn/​编辑 如果你也是跟我一样,什么都不懂,也想要搭建一个自己的自动发卡网站,可以参考一下我的步骤,不难,主要就是细心,一步步来一定成功!! 独角数卡: 举个例子:独角数卡就是一个店面,而且里面帮你装修好了,而你要做的就是把开店之…...

Java_方法(重载方法签名等详解)

在之前我们学习C语言时&#xff0c;当我们想要重复使用某段代码的功能时&#xff0c;我们会将这段代码定义为一个函数&#xff0c;而在java中我们把这段重复使用的代码叫做方法。 方法的定义 类体的内容分为变量的声明和方法的定义&#xff0c;方法的定义包括两部分&#xff1…...

VQ35 评论替换和去除(char_length()和replace函数的使用)

代码 select id ,replace(comment,&#xff0c;,) as comment from comment_detail where char_length(comment)>3知识点 要注意替换的是中文逗号 由于题目说的是汉字长度大于3&#xff0c;所以这里就要使用char_length()而不是length() char_length()&#xff1a;单位为字…...

【MySQL】学习多表查询和笛卡尔积

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-N8PeTKG6uLu4bJuM {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…...

RabbitMQ实现延迟消息的方式-死信队列、延迟队列和惰性队列

当一条消息因为一些原因无法被成功消费&#xff0c;那么这这条消息就叫做死信&#xff0c;如果包含死信的队列配置了dead-letter-exchange属性指定了一个交换机&#xff0c;队列中的死信都会投递到这个交换机内&#xff0c;这个交换机就叫死信交换机&#xff0c;死信交换机再绑…...

【运维测试】测试理论+工具总结笔记第1篇:测试理论的主要内容(已分享,附代码)

本系列文章md笔记&#xff08;已分享&#xff09;主要讨论测试理论测试工具相关知识。Python测试理论的主要内容&#xff0c;掌握软件测试的基本流程&#xff0c;知道软件测试的V和W模型的优缺点&#xff0c;掌握测试用例设计的要素&#xff0c;掌握等价类划分法、边界值法、因…...

【C语言】实现队列

目录 &#xff08;一&#xff09;队列 &#xff08;二&#xff09;头文件 &#xff08;三&#xff09; 功能实现 &#xff08;1&#xff09;初始化 &#xff08;2&#xff09; 销毁队列 &#xff08;3&#xff09; 入队 &#xff08;4&#xff09;出队 &#xff08;5&a…...

【友塔笔试面试复盘】八边形取反问题

问题&#xff1a;一个八边形每条边都是0&#xff0c;现在有取反操作&#xff0c;选择一条边取反会同时把当前边和2个邻边取反&#xff08;如果是0变为1&#xff0c;如果是1变为0&#xff09; 现在问你怎么取反能使得八条边都变为1. 当时陷入了暴力递归漩涡&#xff0c;给出一个…...

GB 18585-2023 壁纸中有害物质限量

壁纸/墙布因其色彩多样&#xff0c;图案丰富&#xff0c;施工方便&#xff0c;价格便宜等多种优势&#xff0c;广泛应用于室内装修材料&#xff0c;在国内&#xff0c;日本&#xff0c;欧美等地区非常普及。 GB 18585-2023壁纸中有害物质限量测试项目&#xff1a; 测试项目 测…...

全面的ASP.NET Core Blazor简介和快速入门

前言 因为咱们的MongoDB入门到实战教程Web端准备使用Blazor来作为前端展示UI&#xff0c;本篇文章主要是介绍Blazor是一个怎样的Web UI框架&#xff0c;其优势和特点在哪&#xff1f;并带你快速入门上手ASP.NET Core Blazor(当然这个前提是你要有一定的C#编程基础的情况&#x…...

HGAME 2024 WEEK2 Crypto WP

前言 我很菜&#xff0c;有没做出来的题目&#xff0c;带*号题为复现。 midRSA 题目&#xff1a; from Crypto.Util.number import * from secret import flagdef padding(flag):return flagb\xff*(64-len(flag))flagpadding(flag) mbytes_to_long(flag) pgetPrime(512) qg…...

GPON OMCI抓包避坑指南:Wireshark插件版本、芯片指令与实战解析全流程

GPON OMCI抓包避坑指南&#xff1a;Wireshark插件版本、芯片指令与实战解析全流程 在GPON网络运维和研发过程中&#xff0c;OMCI&#xff08;ONU Management and Control Interface&#xff09;协议分析是定位问题的关键手段。但许多工程师在实际操作中常陷入版本兼容性陷阱、芯…...

CLIP-GmP-ViT-L-14模型部署保姆级教程:从零开始的Docker环境配置

CLIP-GmP-ViT-L-14模型部署保姆级教程&#xff1a;从零开始的Docker环境配置 你是不是也对那些能看懂图片的AI模型感到好奇&#xff1f;比如&#xff0c;你上传一张猫的照片&#xff0c;AI不仅能认出是猫&#xff0c;还能告诉你这是橘猫&#xff0c;正在晒太阳。CLIP-GmP-ViT-…...

避坑指南:LangChain中create_retrieval_chain与JinaEmbeddings的最佳实践

LangChain与JinaEmbeddings深度整合&#xff1a;从避坑到性能优化的全流程指南 在构建基于大语言模型的检索增强生成(RAG)系统时&#xff0c;LangChain框架与JinaEmbeddings的组合已经成为许多开发者的首选方案。这种技术组合既能利用LangChain强大的流程编排能力&#xff0c;…...

CATIA数控加工仿真:铣平面粗加工的关键步骤与优化技巧

1. CATIA数控加工仿真入门&#xff1a;从零开始掌握铣平面粗加工 第一次接触CATIA数控加工仿真时&#xff0c;我和大多数新手一样被满屏的参数搞得头晕眼花。直到在车间跟老师傅学了三个月&#xff0c;才发现铣平面粗加工这个基础操作里藏着这么多门道。简单来说&#xff0c;这…...

互联网产品创新:基于Qwen3-ASR-0.6B的在线教育实时字幕解决方案

互联网产品创新&#xff1a;基于Qwen3-ASR-0.6B的在线教育实时字幕解决方案 1. 引言 想象一下&#xff0c;你正在上一节重要的在线直播课&#xff0c;老师讲得飞快&#xff0c;有些专业术语没听清&#xff0c;或者因为网络波动声音断断续续。又或者&#xff0c;你身处一个嘈杂…...

YOLOFuse效果实测:低光、烟雾环境下,多模态检测精度提升明显

YOLOFuse效果实测&#xff1a;低光、烟雾环境下&#xff0c;多模态检测精度提升明显 1. 引言 在计算机视觉领域&#xff0c;目标检测技术已经取得了显著进展&#xff0c;但在低光照、烟雾等复杂环境下&#xff0c;传统基于RGB图像的单模态检测方法仍然面临巨大挑战。这些环境…...

告别第三方工具:用Cloudflare官方测速文件快速检测你的网络性能

告别第三方工具&#xff1a;用Cloudflare官方测速文件快速检测你的网络性能 你是否遇到过这样的场景&#xff1a;视频缓冲转圈、文件下载龟速、在线会议卡顿&#xff0c;却不知道是网络问题还是服务商的问题&#xff1f;传统的测速工具要么需要安装软件&#xff0c;要么广告满天…...

2024年TVBOX源接口终极整理:手把手教你如何筛选稳定高速线路

2024年TVBOX源接口高效筛选与优化指南 在流媒体内容消费日益普及的今天&#xff0c;TVBOX作为一款开源播放器解决方案&#xff0c;凭借其强大的扩展性和丰富的资源获取能力&#xff0c;赢得了众多技术爱好者的青睐。然而&#xff0c;面对网络上浩如烟海的源接口资源&#xff0c…...

技术深度解析:Fritzing电路仿真与自动布线实现原理

技术深度解析&#xff1a;Fritzing电路仿真与自动布线实现原理 【免费下载链接】fritzing-app Fritzing desktop application 项目地址: https://gitcode.com/gh_mirrors/fr/fritzing-app Fritzing作为一款开源的电子设计自动化工具&#xff0c;其核心价值在于将复杂的电…...

从数据集到GUI应用:手把手教你用YOLOv11训练自己的手势识别模型(保姆级教程)

从数据集到GUI应用&#xff1a;手把手教你用YOLOv11训练自己的手势识别模型&#xff08;保姆级教程&#xff09; 在计算机视觉领域&#xff0c;手势识别技术正逐渐从实验室走向实际应用。无论是智能家居控制、虚拟现实交互&#xff0c;还是无障碍通信系统&#xff0c;准确快速的…...