3
我一直在關注此chapter以將matplotlib圖形嵌入到QTdesigner生成的GUI中。到目前爲止它工作正常,但我需要在GUI中嵌入工具欄來操作繪圖並保存它。我如何修改示例代碼來添加工具欄?我搜索了很多來源,他們都有自己的自定義代碼,不符合本書中給出的示例。使用matplotlib自定義小部件在pyqt4中嵌入matplotlib工具欄
我相信我需要修改自定義控件類。窗口小部件類的代碼是在這裏:
原代碼(從書):
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
我需要創建一個新的類和/或自定義的widget把它嗎?
好吧,經過更多的研究並查看[link](http://eli.thegreenplace.net/files/prog_code/qt_mpl_bars.py.txt)後,我將類MplWidget修改爲:'class MplWidget(QtGui。 QWidget的): DEF __init __(個體,父母=無): QtGui.QWidget .__初始化__(個體,父母) self.canvas = MplCanvas() self.mpl_toolbar = NavigationToolbar(self.canvas,自我) 自我。 VBL = QtGui.QVBoxLayout() self.vbl.addWidget(self.canvas) self.vbl.addWidget(self.mpl_toolbar) self.setLayout(self.vbl) ' 現在它起作用了。謝謝! – railsnoob123
請發表評論作爲答案並接受它。 – tacaswell