wxPythonのページを見に行ったら、3.0がリリースされていました。これまで、2.8を使っていて、2.9を見送ってしまいました。さっそく、3.0をインストールして使ってみたところ、これまでのスクリプトが動かない部分もちらほら。
これまで、wx.Color()使っていたけど、wx.Colour()になったようで、エラーでとまったり。
これはすぐに修正できましたが、matplotlib1.3.1での動作がいまいち。
以下のスクリプト、python2.7 + wxPython2.8ではちゃんとmatplotlibのFigureCanvasのサイズが設定できていました。
#!/usr/bin/env python
# coding: shift_jis
import matplotlib
matplotlib.use('WXAgg')
from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as FigureCanvas
import wx
class myFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, -1, 'Matplotlib Test',
style=wx.DEFAULT_FRAME_STYLE)
self.fig = matplotlib.figure.Figure()
ax = self.fig.add_axes([0.2, 0.2, 0.6, 0.6])
ax.plot([0, 1], [0, 1])
self.canvas = FigureCanvas(self, -1, self.fig)
self.canvas.SetSize((1024, 600))
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(self.canvas, 0, wx.EXPAND|wx.ALL, 0)
self.SetSizer(sizer)
self.Fit()
self.canvas.draw()
print self.canvas.GetSize()
print self.GetClientSize()
if __name__ == '__main__':
app = wx.App(False)
frame = myFrame()
frame.Show()
app.MainLoop()
しかし、wxPython 3.0にしたところ、サイズが変更されません。
これってwxPython 2.9からでしょうか。
しかたがないので、入れ物(FrameとかPanel)のサイズを変更する方法を使うようにしました。
#!/usr/bin/env python
# coding: shift_jis
import matplotlib
matplotlib.use('WXAgg')
from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as FigureCanvas
import wx
class myFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, -1, 'Matplotlib Test',
style=wx.DEFAULT_FRAME_STYLE)
self.fig = matplotlib.figure.Figure()
ax = self.fig.add_axes([0.2, 0.2, 0.6, 0.6])
ax.plot([0, 1], [0, 1])
self.canvas = FigureCanvas(self, -1, self.fig)
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(self.canvas, 1, wx.EXPAND|wx.ALL, 0)
self.SetSizer(sizer)
self.Fit()
self.canvas.draw()
self.SetClientSize((1024, 600))
print self.canvas.GetSize()
print self.GetClientSize()
if __name__ == '__main__':
app = wx.App(False)
frame = myFrame()
frame.Show()
app.MainLoop()
これまでwxPythonを使ったスクリプトは、動作を確認してそれほど多くの変更が必要ではないことが分かって一安心です。
0 件のコメント:
コメントを投稿