在WxPython GUI示例中组合绘图和网格

时间:2016-06-04 12:42:56

标签: user-interface layout matplotlib grid wxpython

目前我正在WxPython中开发GUI。

我使用matplotib和底层数据的gridview创建了一个线图。但是,当我运行程序时,网格和绘图被加载到单独的窗口中。我正在寻找有关如何将不同项目集成到一个窗口中的示例或教程。 有谁知道这方面的任何好的例子或教程?我找不到一个明确的例子。

谢谢!

2 个答案:

答案 0 :(得分:0)

最近我使用matplotlib和wx绘制了一些直方图,这个解决方案可能可以帮助你解决问题。代码继承自面板,您需要像面板一样添加此组件。要设置数据,请使用函数SetData。

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

class HistogramPanel(wx.Panel):
    def __init__(self, parent):
        wx.Panel.__init__(self, parent)
        self.figure = Figure(figsize=(-1, -1))
        self.canvas = FigureCanvas(self, -1, self.figure)
        self.axis = self.figure.add_subplot(111)

        self.rootSizer = wx.BoxSizer(wx.VERTICAL)
        self.rootSizer.Add(self.canvas, 1, wx.EXPAND | wx.GROW)
        self.SetSizer(self.rootSizer)

        self.FitInside()
        self.Layout()

    def SetData(self, values, color="black", linewidth=1):
        self.axis.clear()
        self.axis.plot(values, color=color, linewidth=linewidth)
        self.axis.set_xlim([0, 256])
        self.Layout()

答案 1 :(得分:0)

以下是示例代码Embedding a matplotlib figure inside a WxPython panel

基本上,要保存matplotlib图,您可以使用FigureCanvasWxAgg,可以导入如下:

from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg

并且,您将在Figure MPL实例上进行正常绘图。

from matplotlib.figure import Figure

并将此图放在FigureCanvasWxAgg上,它可以使用sizer与网格一起放在面板上。