仅使用traits创建Python实时GUI
有没有办法用Python的特性来创建一个用户界面,做一个细胞自动机的模拟呢?
1 个回答
1
当然,你可以用Traits做任何Python能做的事情!
不过说真的,我猜你问的问题其实是关于怎么生成一个图形界面来展示细胞自动机。在这种情况下,我推荐你使用Mayavi,它是基于Traits的。Mayavi有一个叫做surf的功能,可以把一组规则间隔的数据绘制成3D表面。它的文档里还有关于如何给数据加动画的说明,这样可以快速改变底层的表面数据,我试过,效果很好。我有一个3D的numpy数组,形状是(x,y,time),然后在每一步我会把一个切片传给表面对象的数据:
surf.mlab_source.scalars = array[:,:,timepoint_index]
另外,你也可以用Matplotlib的imshow来绘制同样数据的2D图。关于如何在Traits中嵌入Matplotlib,有一个非常好的教程。
使用这些大型库(它们本身还有很多依赖)有一个问题,就是你需要把你的应用程序和这些库一起打包分发。我曾经在Mac上用py2app和在Windows上用py2exe成功打包了一个Mayavi/matplotlib/traits的应用,起步是用Enthought Python Distribution,但这并不简单。不过,如果你只是想让它在你的电脑上运行并生成结果,那么这两种方法会比自己写一个图形系统来处理细胞自动机省时多了。
说到这里,我还听说GarlicSim也不错(正如cool-RR提到的),看起来是专门为你的需求定制的。
因为这是我第一次发帖,所以不能发链接,稍后我会补上。