私は、埋め込みのmatplotlibフィギュアを備えたGUIにwxPythonを使用するPythonアプリに取り組んでいます。と呼ばれるmatplotlib GUIニュートラルウィジェットを使用しようとするまで、それは本当にうまくいっていましたSpanSelector
. 以前は、この動作を自分でコーディングしようとしていましたが、うまくいきませんでした。そのため、それを処理してくれる組み込みのウィジェットがあることを嬉しく思いました。これらのウィジェットは任意の GUI バックエンドで動作するはずであり、wxPython は間違いなくサポートされているバックエンドです。
現時点では、私のコードは非常に単純です。これらの(関連する)機能を備えた定義済みのアプリケーションクラスがあります。
def init_gui(self):
...
self.button5 = wx.Button(tab, label="Manual select", size=(120, 30))
self.button5.Bind(wx.EVT_BUTTON, self.get_selection_manual)
...
def get_selection_manual(self, event):
span = matplotlib.widgets.SpanSelector(self.ax, \
self.process_selection_manual, "horizontal", useblit=True, \
rectprops=dict(alpha=0.5, facecolor="red"))
def process_selection_manual(self, vmin, vmax):
print vmin, vmax
機能していた場合は、ボタンをクリックした後にユーザーが行った選択を出力するだけです。それが呼び出されることは知っていget_selection_manual
ますが、プロットをクリックしてドラッグしても選択が作成されず、コールバックprocess_selection_manual
が呼び出されることもありません。
を入れてsleep()
から表示を更新してみました。興味深いことに、アプリケーションが のsleep(5)
代わりにtime.sleep(5)
. そのため、Python は停止しましたが、当時想定されていたように選択範囲を描画しました。私はそれが起こるのを見たことがなく、それが何を意味するのかよくわかりません。wxPython ウィジェットと matplotlib ウィジェットを一緒に使用した例は見つかりませんでした。