我正試圖在wxPython應用程序的面板內並排放置兩個matplotlib數字。這用於使用wxPython 2.8,但不再使用wxPython 3.0。wxPython面板中matplotlib數字的大小不正確
在wxPython 2.8中,每個圖的寬度是面板大小的一半。在wxPython 3.0中,圖的寬度等於面板大小,這意味着只有左側的圖顯示。然後展開窗戶,最終顯示右側的情節。
最簡單的例子,再現問題如下。
import wx
from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg
from matplotlib.figure import Figure
class MainFrame(wx.Frame):
def __init__(self, *args, **kwargs):
wx.Frame.__init__(self, *args, **kwargs)
panel = wx.Panel(self)
sizer = wx.BoxSizer(wx.HORIZONTAL)
sizer.Add(TestPlot(panel), 1, wx.EXPAND | wx.ALL, border=5)
sizer.Add(TestPlot(panel), 1, wx.EXPAND | wx.ALL, border=5)
panel.SetSizerAndFit(sizer)
class TestPlot(wx.Window):
def __init__(self, *args, **kwargs):
wx.Window.__init__(self, *args, **kwargs)
self.canvas = FigureCanvasWxAgg(self, wx.ID_ANY, Figure())
sizer = wx.BoxSizer(wx.HORIZONTAL)
sizer.Add(self.canvas, 1, wx.ALL, border=20)
self.SetSizerAndFit(sizer)
if __name__ == "__main__":
app = wx.App()
MainFrame(parent=None, size=(300, 300)).Show()
app.MainLoop()
如何讓這個佈局在wxPython 3.0中工作?
我不知道WX框架可言,但是從你的描述和代碼味道我猜測的問題是wx改變了它處理sizer.Add(TestPlot(panel),1,wx.EXPAND | wx.ALL,border = 5)'' – tacaswell 2015-01-11 00:46:29