TraitsUI与Mayavi实例

一:创建一个简单的TraitsUI与Mayavi实例

from numpy import sqrt,sin,mgrid
from traits.api import HasTraits,Instance
from traitsui.api import View,Item
from tvtk.pyface.scene_editor import SceneEditor
from mayavi.tools.mlab_scene_model import MlabSceneModel
from mayavi.core.ui.mayavi_scene import MayaviScene #1创建HasTraits继承类
class ActorViewer(HasTraits):
#.1创建场景实例
scene = Instance(MlabSceneModel,())
#建立视图
view = View(
Item("scene",
editor=SceneEditor(scene_class=MayaviScene),
show_label=False,
resizable=True,
height=,
width=,
),
resizable=True
) def __init__(self,**traits):
HasTraits.__init__(self,**traits)
self.generate_data() def generate_data(self):
#建立数据
x,y = mgrid[-::100j,-::100j]
R = *sqrt(x** + y**)
z = sin(R)/R
#绘制数据
self.scene.mlab.surf(x,y,z,colormap="cool") a = ActorViewer()
a.configure_traits()

二:基于交互控制的Mayavi窗口

(一)框架步骤

(二)程序框架

(三)代码实现

(1)定义窗口变量

(2)建立视图的布局

(3)更新视图绘制

(4)定义Curve生成数据

(四)全部代码

from numpy import cos,sin,pi,arange
from traits.api import HasTraits,Instance,Range,on_trait_change
from traitsui.api import View,Item,Group
from mayavi.core.ui.api import MayaviScene,SceneEditor,MlabSceneModel
from mayavi.core.api import PipelineBase dphin = pi/.
phi = arange(0.0,*pi+0.5*dphin,dphin,'d')
#建立数据
def curve(n_mer,n_long):
mu = phi*n_mer
x = cos(mu)*(+cos(n_long/n_mer)*0.5)
y = sin(mu)*(+cos(n_long/n_mer)*0.5)
z = 0.5*sin(n_long*mu/n_mer)
t = sin(mu)
return x,y,z,t class MyModel(HasTraits):
n_meridional = Range(,,)
n_longitudinal = Range(,,)
#场景模型实例
scene = Instance(MlabSceneModel,()) #后面加上()是将他实例化了
#管线实例
plot = Instance(PipelineBase) def __init__(self,**traits):
HasTraits.__init__(self,**traits)
x, y, z, t = curve(self.n_meridional, self.n_longitudinal)
if self.plot is None: # 如果plot未绘制则输出plot3d
self.plot = self.scene.mlab.plot3d(x, y, z, t,
tube_radius=0.025, colormap="Spectral") #当场景被激活,或者参数发生改变,更新图像
@on_trait_change(['n_meridional','n_longitudinal'])  #似乎监听scene.activated也可以实现在生成scene时计进入下面函数方法
def update_plot(self):
x, y, z, t = curve(self.n_meridional, self.n_longitudinal) if self.plot is None: # 如果plot未绘制则输出plot3d
self.plot = self.scene.mlab.plot3d(x, y, z, t,
tube_radius=0.025, colormap="Spectral")
else: # 如果没有数据变化,将数据更新,重新赋值
self.plot.mlab_source.set(
x=x, y=y, z=z, scalars=t
) #建立视图布局
view = View(
Item("scene",editor=SceneEditor(scene_class=MayaviScene),
height=,width=,show_label=False),
Group("_","n_meridional","n_longitudinal"),
resizable=True
) model = MyModel()
model.configure_traits()

科学计算三维可视化---TraitsUI与Mayavi实例的更多相关文章

  1. 科学计算三维可视化---TraitsUI的介绍

    TraitsUI的介绍 Python中存在Tkinter,wxPython,pyQt4等GUI图像界面编写库,这三类库要求程序员掌握众多的GUI API函数 对于科学计算的应用来说,我们希望可以快速的 ...

  2. 科学计算三维可视化---TraitsUI(控件)

    一:文本编辑器 from traits.api import HasTraits,Int,Str,Password from traitsui.api import View,Item,Group,M ...

  3. 科学计算三维可视化---TraitsUI(配置视图)

    配置视图 模态窗口: from traits.api import HasTraits,Int,Strclass ModelManager(HasTraits): model_name = Str c ...

  4. 科学计算三维可视化---TraitsUI(Group对象组织界面)

    使用Group对象组织界面 将一组相关的Item对象组织在一起 from traitsui.api import Group from traits.api import HasTraits,Int, ...

  5. 科学计算三维可视化---TraitsUI(View定义界面)

    View定义界面 使用View来自定义界面 class ModelManager(HasTraits): model_name = Str category = Str model_file = St ...

  6. Python科学计算三维可视化(整理完结)

    中国MOOC<Pyhton计算计算三维可视化>总结 课程url:here ,教师:黄天宇,嵩天 下文的图片和问题,答案都是从eclipse和上完课后总结的,转载请声明. Python数据三 ...

  7. 科学计算三维可视化---Mlab基础(数据可视化)

    推文:科学计算三维可视化---TVTK库可视化实例 使用相关函数:科学计算三维可视化---Mlab基础(管线控制函数) 一:mlab.pipeline中标量数据可视化 通过持续实例,来感受mlab对数 ...

  8. 科学计算三维可视化---Mlab基础(管线控制函数)

    科学计算三维可视化---TVTK管线与数据加载(可视化管线和图像管线了解) 科学计算三维可视化---Mayavi入门(Mayavi管线) Mlab管线控制函数的调用 Sources:数据源 Filte ...

  9. 科学计算三维可视化---Mlab基础(鼠标选取交互操作)

    一:鼠标选取介绍 二:选取红色小球分析 相关方法:科学计算三维可视化---Mlab基础(基于Numpy数组的绘图函数) 1.小球场景初始化建立 import numpy as np from maya ...

随机推荐

  1. Linux环境下服务器环境搭建-mysql

    下载对应版本的mysql.rpm(Linux 6 安装el6 Linux 7 安装el7) 安装环境 centos 7,安装版本mysql57-community-release-el7-9.noar ...

  2. CS小分队第二阶段冲刺站立会议(6月3日)

    昨日成果:完成了主界面按钮移动交换位置 遇到问题:最后的时候发现仅交换了按钮在数据库中的信息,对于按钮的链接忘记交换了 今日计划:解决这个问题,对这个冲刺阶段的成果进行整理

  3. 阅读<构建之法>第三10、11、12章并提出问题

    <构建之法>第10.11.12章 第10章: 问题:对我们了解了用户的需求后,但是我们想法和做出来的软件会和用户的需求有偏差,比如风格.界面的修饰等等,那么我们程序猿怎样才能让自己的想法更 ...

  4. oh my god 四则运算

    Week1地址:https://git.coding.net/leiqh549/four.git 需求分析: 1.一个生成n道四则运算的程序,要求数字在0-100间,运算符在3-5个之间且运算符至少包 ...

  5. 个人作业-Week 3

    案例分析:必应词典 IOS客户端 调研&评测 一.功能性bug bug 1: 症状:在使用拍照翻译这一功能时,只能对图片中的句子逐行进行翻译.即一个中间有换行的句子会被当成两个句子进行翻译. ...

  6. MiniUI框架合并单元格

    在项目中遇到合并单元格的问题,所以总结一下. 用的是miniUI框架,所以只谈miniUI中的单元格合并. (1)必须添加onLoad="onLoad" (2)需要在JS中进行单元 ...

  7. Mysql-外键foreign key

    1.定义:如果一张表中有一个字段指向另一张表的主键,就子表中将该主键字段叫做外键. 一张表中可存在多个外键 2.外键的作用 保持数据的一致性.完整性 a.对子表(外键所在的表)的作用:子表在进行写操作 ...

  8. Linux里的稀疏文件

    今天发现一个有意思的现象,文件系统大小只有37GB,上面却有一个900GB的文件!查了下,这个叫“稀疏文件”,我理解类似于VMWare里的瘦硬盘模式吧,先预先划出一块空间,然后往里填数据. [root ...

  9. poj3320 Jessica's Reading Problem

    Description Jessica's a very lovely girl wooed by lots of boys. Recently she has a problem. The fina ...

  10. JVM调优及参数设置

    (1)参数 -Xms:初始堆大小 -Xmx :最大堆大小 此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存 -Xmn :年轻代大小 整个堆大小=年轻代大小 + 年老代大小 + 持 ...