2012-06-21 3 views
1

저는 며칠 동안이 문제에 고심하고 있습니다. 내가 wx.Notebook을 사용하지 않는다면, FigureCanvas를 크기 조절기 내에서 정확하게 크기 조정할 수 있지만, 일단 FigureCanvas를 wx.Notebook 패널에 배치하면 그 그림은 패널 크기 조절기를 무시하는 것처럼 보입니다. 그것은 또한 새로 고침 문제의 일종을 가지고 있습니다. 화면에서 떼어 내고 다시 켜면 음모가 사라집니다. 명령의 순서에 문제가있을 수 있지만 찾을 수없는 것 같습니다. 이 게시물 : How to update a plot with python and Matplotlib 내가 지금까지 얻을 수 있도록 도와 줬지만, wx.Notebook에서 사용하면 왜 줄거리가 다른 방식으로 작동하는지 알 수 없습니다. 여기 matplotlib에서 올바른 레이아웃을 얻는 방법 wx.Notebook 패널의 FigureCanvas

는 어떻게 생겼는지 때 그 첫 번째 표시 : 여기 http://static.inky.ws/image/2205/image.jpg

나는 화면을 반 탈옥 한 후에는 다음과 같습니다 http://static.inky.ws/image/2206/image.jpg

#!/usr/bin/env python 
import wx 
from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as FigureCanvas 
from matplotlib.figure import Figure 

class MyFrame(wx.Frame): 
    def __init__(self, parent): 
     wx.Frame.__init__(self, 
          parent, 
          id=wx.ID_ANY, 
          pos=wx.DefaultPosition, 
          size=wx.Size(-1,-1), 
          style=wx.DEFAULT_FRAME_STYLE|wx.TAB_TRAVERSAL) 

     fgSizer8 = wx.FlexGridSizer(0, 1, 0, 0) 
     self.m_notebook2 = wx.Notebook(self, 
             wx.ID_ANY, 
             wx.DefaultPosition, 
             wx.DefaultSize, 
             0) 

     self.m_panel8 = wx.Panel(self.m_notebook2, 
           wx.ID_ANY, 
           wx.DefaultPosition, 
           wx.DefaultSize, 
           wx.TAB_TRAVERSAL) 

     bSizer20 = wx.BoxSizer(wx.VERTICAL) 

     self.fig = Figure() 
     self.axes = self.fig.add_subplot(111) 
     self.pts = self.axes.plot([1, 2, 3], [4, 5, 7], 'ro-', picker=5) 
     self.canvas = FigureCanvas(self, -1, self.fig) 

     bSizer20.Add(self.canvas, 1, wx.ALL|wx.EXPAND, 5) 

     self.m_panel8.SetSizer(bSizer20) 
     self.m_panel8.Layout() 
     bSizer20.Fit(self.m_panel8) 
     self.m_notebook2.AddPage(self.m_panel8, u"a page", False) 

     fgSizer8.Add(self.m_notebook2, 1, wx.EXPAND |wx.ALL, 5) 

     self.SetSizer(fgSizer8) 
     self.Layout() 
     fgSizer8.Fit(self) 

     self.Centre(wx.BOTH) 

if __name__ == "__main__": 
    app = wx.App(0) 
    frame = MyFrame(None) 
    frame.Show() 
    app.MainLoop() 

답변

3

변화를

self.canvas = FigureCanvas(self, -1, self.fig) 

self.canvas = FigureCanvas(self.m_panel8, -1, self.fig) 

enter image description here

+0

감사합니다. 완벽하게 작동했습니다. – willblatt

관련 문제