我想通过 matplotlib 库绘制一个图形,并从 PyMOL 将其作为单独的Tkinter (Tk) 窗口调用。看起来这个任务并不简单,因为它需要几个线程以及一些 matplotlib/Tk 的调整调整(https://github.com/speleo3/pymol-psico/blob/master/psico/matplotlib_fix.py) . Matplotlib 提供了一种所谓的交互模式,我在下面的简化示例中实现了它。如果我将其作为插件安装,此代码在 Windows 上运行良好。相反,它在 Mac 上崩溃,当我使用命令“run”从 cmd 运行它时也会崩溃。
问题:如何在 PyMOL 会话中创建一个新的 Tk 窗口/线程并在其上输出 matplotlib 图?
from pymol import cmd, stored
from Tkinter import *
import numpy
import matplotlib
matplotlib.use('TkAgg')
class Plotter:
def plotDistances(self, x, y):
plt.figure()
plt.plot(x, y, 'o')
plt.tight_layout()
plt.ion()
plt.show()
graph1 = Plotter()
xtest = numpy.linspace(1, 300, 300)
ytest = numpy.linspace(1, 300, 300)
graph1.plotDistances(xtest,ytest)