我正在使用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)
除了一个小问题外,这几乎完美无缺。
当我运行代码并打开图像时,窗口如下所示。
此窗口包含三个wx.Panel,中间一个是CanvasPanel。你可以看到,即使比例= 1和style = wx.GROW,CanvasPanel的大小也有点小。此外,当我通过拖动窗口的角落调整此窗口的大小时,它看起来像下面。
CanvasPanel的大小正确更改!为什么?如何在不调整大小的情况下修改我的代码以使CanvasPanel适合查看器。