是否可以在 tkinter 中嵌入 mayavi 图?

Posted

技术标签:

【中文标题】是否可以在 tkinter 中嵌入 mayavi 图?【英文标题】:Is it possible to embed a mayavi plot inside tkinter? 【发布时间】:2016-11-19 07:00:54 【问题描述】:

下面的代码转储了两个屏幕,一个用于 Tkinter,第二个用于 mayavi。如何在 Tkinter 中嵌入 mayavi。甚至可能吗?如果没有,构建一个在框架/画布内嵌入 mayavi 图的 GUI 的替代方法是什么?

from tkinter import *
import numpy
from mayavi.mlab import *


top = Tk()


t = numpy.linspace(0, 4 * numpy.pi, 20)
cos = numpy.cos
sin = numpy.sin

x = sin(2 * t)
y = cos(t)
z = cos(2 * t)
s = 2 + sin(t)

points3d(x, y, z, s, colormap="copper", scale_factor=.25)

top.mainloop()

【问题讨论】:

【参考方案1】:

Mayavi 可以嵌入到基于 wxWidgets http://wxwidgets.org/ 或 Qt https://www.qt.io/ 的 GUI 程序中,而不是 Tkinter。

相关文档为http://docs.enthought.com/mayavi/mayavi/building_applications.html

该文档还包含使用控制器小部件的简单示例,如果您的需求很简单,可以让您更接近解决方案。

【讨论】:

【参考方案2】:

我会尝试使用这个库将 tkinter 和 mayavi 连接在一起: https://github.com/jonwright/pyopengltk

在 Tkinter 窗口中提供 OpenGL 上下文,希望您能够将该上下文传递给 Mayavi。

【讨论】:

以上是关于是否可以在 tkinter 中嵌入 mayavi 图?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 tkinter 在 python 中嵌入 python 解释器框架?

使用 PIL 在 Tkinter Canvas 小部件中嵌入图像

Tkinter 嵌入图形子进程

将按键发送到嵌入式 Pygame

PyQt4 - 如何禁用所有热键(本机键盘快捷键)

在 tkinter 画布中嵌入来自 Arduino 的 Matplotlib 实时绘图数据