如何正确刷新wx.Panel?

时间:2016-03-16 15:04:41

标签: python matplotlib wxpython

我正在使用wxPython创建一个图像查看器。我想单独查看多个图像,所以我在下面(部分)编写了一个代码。

from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as FigureCanvas
from matplotlib.figure import Figure 

class CanvasPanel(wx.Panel):
    def __init__(self, parent):
        wx.Panel.__init__(self, parent)

        self.figs = []
        self.axes = []
        self.canvases = []
        self.panelsizers = []

    def draw(self, data):
        """data is 2D numpy array"""
        fig = Figure()
        self.figs.append(fig)

        ax = fig.add_subplot(111)
        ax.imshow(data, interpolation='none')
        self.axes.append(ax)

        canvas = FigureCanvas(self, wx.ID_ANY, fig)
        self.canvases.append(canvas)

        panelsizer = wx.BoxSizer()
        panelsizer.Add(canvas, 1, wx.GROW)
        self.panelsizers.append(panelsizer)

        self.SetSizer(panelsizer)

除了一个小问题外,这几乎完美无缺。

当我运行代码并打开图像时,窗口如下所示。

enter image description here

此窗口包含三个wx.Panel,中间一个是CanvasPanel。你可以看到,即使比例= 1和style = wx.GROW,CanvasPanel的大小也有点小。此外,当我通过拖动窗口的角落调整此窗口的大小时,它看起来像下面。

enter image description here

CanvasPanel的大小正确更改!为什么?如何在不调整大小的情况下修改我的代码以使CanvasPanel适合查看器。

0 个答案:

没有答案