2012-07-31 73 views
0

我在一个wx.Frame(或wx.Panel)的Matplotlib图形画布中间歇性地使用Matplotlib NavigationToolbar2Wx来实现此行为。如果选择了缩放图标或平移图标,则该图标消失,但空白区域的点击仍会切换工具。主页,后退步骤或前进步骤的图标均按预期运行。Matplotlib ToolBar图标在wxPython面板中选中时消失

任何人都可以提供建议1.什么原因导致它和2.如何解决它?

感谢joaquin发布的初始代码稍作修改以包含工具栏。我使用的是python 2.6,wxPython 2.9.2.4 osx-carbon(经典的) )和Matplotlib 1.1.0

感谢

下面的代码显示问题:

#!/usr/bin/env python 
    # encoding: UTF-8 
    """ 
    wxPython and Matplotlib Canvas with Matplotlib Toolbar.py 

    """ 
    from numpy import arange, sin, pi 
    import matplotlib 
    matplotlib.use('WXAgg') 

    from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as FigureCanvas 
    from matplotlib.backends.backend_wx import NavigationToolbar2Wx 
    from matplotlib.figure import Figure 

    import wx 

    class CanvasPanel(wx.Panel): 
     def __init__(self, parent): 
      wx.Panel.__init__(self, parent) 
      self.figure = Figure() 
      self.axes = self.figure.add_subplot(111) 
      self.canvas = FigureCanvas(self, -1, self.figure) 
      # Add Matplotlib Toolbar 
      # Add the Matplotlib Navigation toolBar here 
      self.toolbar=NavigationToolbar2Wx(self.canvas) 
      self.toolbar.AddLabelTool(5,'',wx.ArtProvider.GetBitmap(wx.ART_FILE_OPEN, wx.ART_TOOLBAR, (32,32))) 
      #self.Bind(wx.EVT_TOOL, self.NewTitle(), id=5) 
      self.toolbar.Realize()  

      # Add to Box Sizer 
      self.sizer = wx.BoxSizer(wx.VERTICAL) 
      self.sizer.Add(self.toolbar, 0, wx.LEFT | wx.TOP | wx.GROW) 
      self.sizer.Add(self.canvas, 1, wx.LEFT | wx.TOP | wx.GROW) 
      self.SetSizer(self.sizer) 
      self.Fit() 

     def draw(self): 
      t = arange(0.0, 3.0, 0.01) 
      s = sin(2 * pi * t) 
      self.axes.plot(t, s) 


    if __name__ == "__main__": 
     app = wx.PySimpleApp() 
     fr = wx.Frame(None, title='test',size=(800,600)) 
     panel = CanvasPanel(fr) 
     panel.draw() 
     fr.Show() 
     app.MainLoop() 

回答

0

我不能在这个具体问题, 的原因发表评论,但我遇到了一些问题,非Agg后端与wxpython 2.9(w代码工作正常2.8)。用Agg版本替换工具栏可以解决这些问题;例如为:

from matplotlib.backends.backend_wx import NavigationToolbar2Wx 

==>

from matplotlib.backends.backend_wxagg import NavigationToolbar2WxAgg 

并相应地调整的代码:

self.toolbar=NavigationToolbar2Wx(self.canvas) 

==>

self.toolbar = NavigationToolbar2WxAgg(self.canvas) 

HTH, VBR

+0

我试过使用NavigationToolbar2Wx和NavigationToolbar2WxAgg具有相同的结果消失图标的缩放和平移。我发现了另一个类似的问题,其中NavigationToolbar2被隐藏,并且使用相同的调用来构建新的工具栏,这些调用在工具栏被设置在框架中时似乎工作。我没有试图将它放在图形画布中,以查看它是否有效。 – user1032355 2012-08-05 05:51:25

+0

看起来问题在于将新的位图按钮添加到NavigationToolbar2Wx工具栏。如果我删除添加的工具,问题就会消失。我想我将不得不使用其他工具创建另一个工具栏 – user1032355 2012-08-06 16:19:22