我想将 Matplotlib 中的交互式绘图和 python 中的命令行界面 Cmd 结合起来。我怎样才能做到这一点?我可以使用线程吗?我尝试了以下方法:
from cmd import Cmd
import matplotlib.pylab as plt
from threading import Thread
class MyCmd(Cmd):
def __init__(self):
Cmd.__init__(self)
self.fig = plt.figure()
self.ax = self.fig.add_subplot(1,1,1)
def do_foo(self, arg):
self.ax.plot(range(10))
self.fig.canvas.draw()
if __name__=='__main__':
c = MyCmd()
Thread(target=c.cmdloop).start()
plt.show()
它会打开一个图形窗口,我可以在控制台中键入实际执行的命令。当执行“foo”命令时,它会在图形窗口中绘制。到目前为止一切正常。但是,当我重新进入控制台时,控制台似乎卡住了,现在有新的命令窗口。但是当我点击图形窗口时,控制台会输出一个新的命令提示符,我可以输入一个新的命令。看来这两个循环并没有真正交错或什么的。有没有更好、更通用的方法?