Я пытаюсь иметь две фигуры matplotlib бок о бок внутри панели в приложении wxPython. Это использовалось для работы с wxPython 2.8, но уже не в wxPython 3.0.Неправильная калибровка фигур matplotlib в панели wxPython
В 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 (панель), 1, wx.EXPAND | wx.ALL, border = 5)' – tacaswell