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()
Figure ウィンドウが開き、実際に実行されるコマンドをコンソールに入力できます。「foo」コマンドを実行すると、Figure ウィンドウに描画されます。これまでのところ、すべて問題ありません。ただし、コンソールに再度入ると、コンソールがスタックしているように見え、新しいコマンド ウィンドウが表示されます。しかし、Figure ウィンドウをクリックすると、コンソールに新しいコマンド プロンプトが出力され、新しいコマンドを入力できます。2 つのループが実際にはインターリーブされていないようです。より良い、より一般的な方法はありますか?