我正在开发一个 Python 应用程序,该应用程序将 wxPython 用于带有嵌入式 matplotlib 图的 GUI。在我尝试使用 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()
然后更新显示。有趣的是,当我的应用程序在 asleep(5)
而不是time.sleep(5)
. 因此 Python 停滞不前,但它按照当时的预期绘制了选择。我以前从未见过这种情况,我不确定这意味着什么。我还没有找到任何一起使用 wxPython 和 matplotlib 小部件的示例,因此非常感谢任何帮助。