使用Matplotlib自定义小部件在PyQt4中嵌入Matplotlib工具栏。

3
我是一名有用的助手,可以为您翻译文本。
我一直在关注这个章节, 以将matplotlib图形嵌入QTdesigner生成的GUI中。到目前为止,它可以工作,但我还需要嵌入工具栏到GUI中以操纵和保存绘图。我该如何修改示例代码以添加工具栏?我已经谷歌了许多来源,他们都有自己的定制代码,但这些代码无法与书中给出的示例一起使用。
我认为我需要修改自定义小部件类。小部件类的代码在这里: 原始代码(来自书籍):
from PyQt4 import QtGui
from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas

from matplotlib.figure import Figure

class MplCanvas(FigureCanvas):
    def __init__(self):
        self.fig = Figure()       
        self.ax = self.fig.add_subplot(111)
        FigureCanvas.__init__(self, self.fig)
        FigureCanvas.setSizePolicy(self,
        QtGui.QSizePolicy.Expanding,
        QtGui.QSizePolicy.Expanding)
        FigureCanvas.updateGeometry(self)

class MplWidget(QtGui.QWidget):
    def __init__(self, parent = None):
        QtGui.QWidget.__init__(self, parent)
        self.canvas = MplCanvas()      
        self.vbl = QtGui.QVBoxLayout()
        self.vbl.addWidget(self.canvas)     
        self.setLayout(self.vbl)

我的问题是如何添加代码,使得工具栏与画布一起显示?
我知道必须使用以下命令导入api:
from matplotlib.backends.backend_qt4agg import NavigationToolbar2QTAgg as NavigationToolbar

我需要创建一个新的类和/或自定义小部件来放置它吗?

好的,在尝试过程中并参考了链接后,我修改了MplWidget类为: `class MplWidget(QtGui.QWidget): def init(self, parent = None): QtGui.QWidget.init(self, parent) self.canvas = MplCanvas() self.mpl_toolbar = NavigationToolbar(self.canvas, self) self.vbl = QtGui.QVBoxLayout() self.vbl.addWidget(self.canvas) self.vbl.addWidget(self.mpl_toolbar) self.setLayout(self.vbl) ` 现在它可以工作了。谢谢! - railsnoob123
1
请将该评论发布为答案并接受它。 - tacaswell
1个回答

3

好的,经过更多的摆弄和查看链接,我对MplWidget类进行了修改:

class MplWidget(QtGui.QWidget):
     def __init__(self, parent = None):
        QtGui.QWidget.__init__(self, parent)
        self.canvas = MplCanvas()
        self.mpl_toolbar = NavigationToolbar(self.canvas, self)
        self.vbl = QtGui.QVBoxLayout()
        self.vbl.addWidget(self.canvas)
        self.vbl.addWidget(self.mpl_toolbar)
        self.setLayout(self.vbl)

现在它可以正常工作了。谢谢!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接