以前に関連トピックについて別のチケットを開いたことがあるので、お詫び申し上げます。私が今得た答えのおかげで、私はより具体的にすることができます。Tkinterをベースにした解決策もいくつか受け取りましたが、イベントとループの問題を解決したいと思います。
私が扱っている特定のケースは次のとおりです。配列の配列があります。matplotlibにその最初の要素をプロットさせ、1つのキー(関連するイベントを含む)を押して、プログラムが2番目の配列、同じ動作などをプロットできるようにします。
簡単な例として:
import matplotlib.pyplot as plt
import numpy as np
# Define the event
def ontype(event):
if event.key == '1':
print 'It is working'
plt.clf()
# Create figure an connect the event to it
fig=plt.figure(figsize=(16,8))
plt.gcf().canvas.mpl_connect('key_press_event',ontype)
# Loop
for element in xrange(10):
#This mimicks the "array of arrays" generating a random array in each loop
vector = np.random.random(10)
plt.plot(vector)
plt.show()
最初のプロット(ループが最初に実行されるとき)が得られ、1を押すまで開いたままになると予想されます。ただし、得られるのは10個のベクトルがプロットされた図であり、1を押すと図は次のようになります。クリアされ、端末から「動作中」と表示されます。最初の要素をプロットし、キーが押されたら次の要素に移動するプログラムが必要です。これに関するヒントはありますか?私は何が間違っているのですか?
君たちありがとう!
編集:
原則として、プログラムの構造を変更することはできず、何かをプロットする前にさまざまなものを計算するためにforループが必要であることに注意してください。したがって、プログラムは行く必要があります
def ontype(event):
define event
Some stuff
elements = array of arrays
for element in elements:
do more stuff
plot element and "stay" in this plot untill any event key is pressed. And then, go to the next element in elements and do the same
編集2:
自分のことをきちんと説明しておらず、データの種類が誤解されていたのではないかと思います。私の場合、私は膨大なデータの表を読んでおり、各行は異なるソースです。私がプロットしようとしているのは、列の情報です。私は物理学者なので、スタイリッシュなプログラミングなどについてはあまり知識がありません。問題は...forループでこれを行う方法がない場合、誰かがそれなしでこの種の作業を行う方法を私に説明できますか?