2012-07-31 2 views
0

Matplotlib Figure NavigationToolbar2Wx를 사용하여 wx.Frame (또는 wx.Panel)의 간헐적으로이 문제가 발생했습니다. 확대/축소 아이콘 또는 팬 아이콘을 선택하면 아이콘이 사라지지만 빈 공간의 클릭은 도구를 계속 토글합니다. 가정용 아이콘, 뒤로 단계 또는 앞으로 단계는 모두 예상대로 작동합니다.wxPython 패널에서 Matplotlib 도구 모음 아이콘을 선택하면 사라짐

누구든지 1에 대한 조언을 제공 할 수 있습니까? 원인 및 해결 방법은 무엇입니까?

게시 용 joaquin 덕분에 초기 코드가 툴바를 포함하도록 약간 수정되었습니다. (http://stackoverflow.com/questions/10737459/embedding-a-matplotlib-figure-inside-a-wxpython-panel)

내가 사용 파이썬 2.6, wxPython을 2.9.2.4 OSX - 탄소 해요 (고전 나는이 특정 문제, 의 원인에 대해 언급 할 수는 없지만 나는 몇 가지 문제가 발생했다

#!/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

:) 및하기 matplotlib 1.1.0

감사

아래의 코드는 문제를 보여줍니다 wxpython 2.9의 비 Agg 백엔드 (w hile 코드가 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

+0

NavigationToolbar2Wx 툴바에 새로운 비트 맵 버튼을 추가하는 것이 문제인 것 같습니다. 추가 된 도구를 제거하면 문제가 사라집니다. 나는 추가 툴로 다른 툴바를 만들어야 할 것 같아. – user1032355