Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Mayavi窗口停止出现

Mayavi窗口停止出现
EN

Stack Overflow用户
提问于 2016-12-05 14:12:22
回答 1查看 1.5K关注 0票数 2

我已经在python3.5和windows 10机器上使用了mayavi。今天,我正在使用mayavi编写一些脚本,而且没有任何原因(据我所知),mayavi可视化窗口停止了显示。事实上,任何mayavi示例都不再显示可视化窗口。脚本将在mlab.show()上等待,但不会显示任何内容。

我尝试了以下方法,但它仍然没有显示可视化窗口(每次只是在mlab.show()命令下等待):

  • 重新启动机器,再试一次。
  • pip安装--升级到mayavi,vtk和pyQt4,然后再试一次。
  • 我创建了一个新的虚拟主机,然后安装numpy、pyQt4、vtk、mayavi,然后再试一次。
  • 我使用boy.py (mlab.show,stop=True)运行这个示例。stop=True显示一个带有“停止交互”按钮的窗口,以完成事件循环。我看到了这个窗口,但没有看到可视化窗口。我想也许窗户就在那里,但却隐藏着。我找到了WinLister,它允许你显示所有的窗口。我可以看到,最后打开的窗口是两个QWidget,一个用于带有关闭按钮的窗口,它显示为可见,另一个显示为不可见。我把那个窗口切换到可视窗口,我看到一个可能是mayavi可视化窗口的窗口,但它都是空白的。
  • 如果我逐步完成对mlab.show()的调用,我看到它最终会转到站点-packages/pyface/utils/guisupport.py中的函数start_event_loop_qt4(),并且它在对app.exec_()的调用中无限期地等待,其他任何事情都不会发生。
  • 我安装了一个新的Python3.5.2,创建了一个新的虚拟环境,并安装了numpy、pyQt4、vtk、mayavi,然后再试一次,同样的问题。
  • 我去了另一台机器,安装了numpy、pyQt4、vtk、mayavi,这些例子运行得很好(只是检查一下我没有发疯)。

可能与此无关,但在窗口停止显示之前,我所做的最后一件事是从mayavi属性窗口录制脚本,我想看看哪些命令对应于将视点移动到某个位置。一旦我看到命令被记录下来,我就复制它们并关闭mayavi可视化窗口而不停止记录。从那一刻起,我就经历了所描述的问题。

更新:

我已经在运行的机器上调试了boy.py示例,在没有调试的机器上(这两台机器都有相同的软件配置),我已经找到了它们的执行偏离的第一点。

创建图形时:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mlab.figure(fgcolor=(0, 0, 0), bgcolor=(1, 1, 1))

工作的机器打开一个空的vtk/mayavi窗口,不工作的机器不会打开任何东西。

我逐步完成了图形函数(在不能工作的机器中),并发现在执行堆栈的此时,它开始偏离:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
boy.py,  line 23
  mlab.figure(fgcolor=(0, 0, 0), bgcolor=(1, 1, 1))
figure.py,  line 68, in figure
  engine.new_scene(name=name, size=size)
recordable.py,  line 45, in _wrapper
  result = func(*args, **kw)
engine.py,  line 452, in new_scene
  viewer = self.scene_factory(**factory_kwargs)

查看器是一个mayavi.core.null_engine.DummyViewer对象,与机器一样,查看器是一个mayavi.core.ui.mayavi_scene.MayaviViewer对象。

我还发现传递给self.scene_factory的self.scene_factory是它不能工作的机器中的{},它在它工作的机器中是{'size':(400,350)}

我正在努力理解scene_factory是如何工作的,但这是一个有点令人畏惧的任务。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-10 13:10:54

我找到了解决办法!

通过遍历mlab.figure()的代码,我发现在执行堆栈的此时:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
boy.py,  line 23
  mlab.figure(fgcolor=(0, 0, 0), bgcolor=(1, 1, 1))
figure.py,  line 63, in figure
  engine = get_engine()
engine_manager.py,  line 101, in get_engine
  return self.new_engine()
engine_manager.py,  line 154, in new_engine
  elif options.backend == 'test':

后端是“test”,它实例化了

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
engine = NullEngine(name='Null Mlab Engine')

在运行后端的机器中,后端是“auto”,它实例化了

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
engine = Engine(name='Mlab Engine')

因此,我搜索了这个后端是如何设置的,这与mayavi.preferences.prefence_manager.py有关,我看到在同一个文件夹中有一个preferences.ini。但是,它已经有一个变量集为后端='auto'

然后,我发现脚本mayavi.scripts.mayavi2.py显示了一个数据可视化器。如果我们选择菜单选项Tools/Preferences/Mayavi/Mlab,字段后端被设置为'test‘。我将其更改为“auto”,然后mayavi boy.py示例又开始工作了!

一件令人困惑的事情是,我回到了最初的Python3.5安装和最初的虚拟环境。我运行了boy.py示例,它在安装过程中不需要做任何操作。因此,我怀疑这些设置是存储在python或virtualenv文件夹之外的其他地方,可能是在windows注册表中?这就是为什么重新安装mayavi,即使是在一个新的虚拟环境中,使用一个新的python安装也不能解决这个问题!

我不知道后端是如何改变的,也许我是在试验mayavi的时候自己改变的。但是,我认为这些首选项不应该在虚拟环境或使用中的python安装之外持久存在。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40984287

复制
相关文章
数据库的查询语句_数据库select from where
这是因为: 1 、 在dos窗口中,默认的编码格式gbk,而mysql服务器软件使用的编码utf8 2、在dos窗口输入一个指令,模糊查询当前mysql数据库中所有带有”character”字符集的变 量全部出来 SHOW VARIABLES LIKE ‘%character%’ ;
全栈程序员站长
2022/10/04
1.4K0
数据库的查询语句_数据库select from where
MySQL扩展
mysql中变量不用事前申明,在用的时候直接用“@变量名”。 第一种用法:set @num=1; 或set @num:=1; 第二种用法:select @num:=1; 也可以把字段的值赋值给变量 select @num:=字段名 from 表名 where …… 注意上面两种赋值符号,使用set时可以用 = 或 := ,但是使用select时必须用 :=
化羽羽
2022/10/28
2K0
Mysql索引-不会使用索引的场景
在日常开发中,我们经常会发现,Mysql中一些逻辑上一样的sql,往往性能差异很大,至于为什么会发生这样的问题,今天我们就看看几个常见的案例
小土豆Yuki
2020/11/03
1.2K0
tbase执行select * from table_name limit 10 无反应
sql脱敏: select * from table_name limit 10;
大大刺猬
2022/08/19
6310
MySQL学习笔记(长期更新)
整数:INT。 ⼩数:DECIMAL。 字符串:TEXT。 ⽇期与时间:DATETIME。
关忆北.
2021/12/07
9680
MySQL学习笔记(长期更新)
update set from where
两个表a、b,想使b中的memo字段值等于a表中对应id的name值 表a:id,name 1 王 2 李 3 张 表b:id,ClientName 1 2 3 (MS SQL Server)语句:update b set ClientName = a.name from a,b where a.id = b.id
乔达摩@嘿
2020/09/11
1.6K0
千呼万唤始出来,MySQL 8.0索引三剑客之函数索引
独孤九剑,重剑无锋,大巧不工,通晓剑意,无所施而不可。三剑客之首,函数索引。 函数索引这个概念并不新颖,Oracle早在十年前的Oracle10g中就支持了函数索引,函数索引在Oracle数据库中使用相当广泛和成熟,而MySQL却一直没有开发相关的索引功能。不过好消息是,MySQL 终于在8.0版本引入了这一特性。真的是,千呼万唤始出来,不过好歹还是来了。
吹水老王
2022/05/17
1.7K0
mysql分区函数_mysql 分区可用函数
当然,还有FLOOR(),CEILING() 等,前提是使用这两个分区函数的分区健必须是整型。
全栈程序员站长
2022/06/27
5.9K0
Hive性能优化统计每日IP CREATE TABLE ip_2014_12_29 AS SELECT COUNT(DISTINCT ip) AS IP FROM logdfs WHERE logda
Hive性能优化 1.概述   继续《那些年使用Hive踩过的坑》一文中的剩余部分,本篇博客赘述了在工作中总结Hive的常用优化手段和在工作中使用Hive出现的问题。下面开始本篇文章的优化介绍。 2.介绍   首先,我们来看看Hadoop的计算框架特性,在此特性下会衍生哪些问题? 数据量大不是问题,数据倾斜是个问题。 jobs数比较多的作业运行效率相对比较低,比如即使有几百行的表,如果多次关联多次汇总,产生十几个jobs,耗时很长。原因是map reduce作业初始化的时间是比较长的。 sum,
Albert陈凯
2018/04/04
1.7K0
Hive性能优化统计每日IP CREATE TABLE ip_2014_12_29 AS SELECT COUNT(DISTINCT ip) AS IP FROM logdfs WHERE logda
MYSQL 性能优化 index 函数,隐藏,前缀,hash 索引 使用方法(2)
接着上期说,MYSQL 8 的索引的方式相对MYSQL 5.7 有了很多的进步,其中最突出的就是添加的functional indexes , 那么这个功能到底是什么时候开始的有的。
AustinDatabases
2022/07/13
5710
MYSQL 性能优化  index  函数,隐藏,前缀,hash 索引 使用方法(2)
索引为什么失效了
我们发现查询语句索引失效了,原因在于我们在t_modified字段上使用了month函数。
用户7447819
2021/07/23
3100
MySQL入门详解(一)---mysql的语言
当客户端连接到服务器是,MySQL访问控制有两个阶段:连接验证 对用户名密码,请求验证 对权限验证
步履不停凡
2019/09/11
1.3K0
[MySQL]select和where子句优化
数据库优化: 1.可以在单个SQL语句,整个应用程序,单个数据库服务器或多个联网数据库服务器的级别进行优化 2.数据库性能取决于数据库级别的几个因素,例如表,查询和配置设置 3.在数据库级别进行优化,在硬件级别进行优化,平衡可移植性和性能 4.合适的结构,合适的数据类型;执行频繁更新的应用程序大量表(少列);分析大量数据的应用程序少量表(多列);选择合适的存储引擎和索引; 5.压缩适用于InnoDB表的各种工作负载,以及只读MyISAM表 6.选择合适的锁定策略;InnoDB存储引擎可以处理大多数锁定问题 7.配置的主要内存区域是InnoDB缓冲池和MyISAM密钥缓存。 8.优化select语句,这方面技巧同样适用于其他带where的delete语句等,在where子句的列上设置索引;索引对于引用多个列如join和外键尤其重要
唯一Chat
2019/09/10
1.6K0
两千字揭密 MySQL 8.0.19 三大索引新功能:隐藏索引,降序索引,函数索引
导读:本文详细介绍 MySQL 8.0.19 三大索引新功能,隐藏索引,降序索引,函数索引,结合其他同仁的技术应用案例,进一步进行验证改编,最后总结心得,希望对大家有帮助。
数据和云
2020/03/25
1K0
Select From Multi Tables
除了通过Left Join将多个表进行关联外,也可以通过以下方式进行多表之间的关联。 SELECT FROM Table1,Table2
None_Ling
2021/11/24
5330
MySQL深入学习第十八篇-为什么这些SQL语句逻辑相同,性能却差异巨大?
在 MySQL 中,有很多看上去逻辑相同,但性能却差异巨大的 SQL 语句。对这些语句使用不当的话,就会不经意间导致整个数据库的压力变大。
越陌度阡
2020/11/26
5170
MySQL深入学习第十八篇-为什么这些SQL语句逻辑相同,性能却差异巨大?
MySQL实战十八讲-为什么这些SQL语句逻辑相同,性能却差异巨大?
在 MySQL 中,有很多看上去逻辑相同,但性能却差异巨大的 SQL 语句。对这些语句使用不当的话,就会不经意间导致整个数据库的压力变大。
越陌度阡
2022/05/06
4030
MySQL实战十八讲-为什么这些SQL语句逻辑相同,性能却差异巨大?
select * from t_student where class between 200 and 300需要执行几次索引树的搜索操作,会扫描多少行
在这个过程中,回到主键索引树搜索的过程,我们称为回表。可以看到,这个查询过程读了 class_idx 索引树的 3 条记录(步骤 1、3 和 5),回表了两次(步骤 2 和 4)。
共饮一杯无
2022/11/28
2770
select 1 from dual
然后觉得有点奇怪,数据库里面都没有创建这个dual表,这个表是从何而来呢?然后Google了一波,理解了一下。
mingmingcome
2021/11/29
1K0
MySQL基础SQL编程学习2
描述:主要学习数据库的DDL数据库定义语言,比如CREATE , DROP, ALTER 等等:
全栈工程师修炼指南
2022/09/29
7.3K0
MySQL基础SQL编程学习2

相似问题

SELECT * FROM $table WHERE FROM= $x?

33

select * from table where VS select column from表where

30

select from table where @variable in(表列)

10

SELECT * FROM table WHERE row IN ('list')

33

SELECT FROM Table where the table name in a variable SQL

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文