【问题标题】:Adding Navigation Toolbar to the Figure (matplotlib and PyQt4)向图中添加导航工具栏(matplotlib 和 PyQt4)
【发布时间】:2015-08-05 11:10:44
【问题描述】:

我想在我的 PyQt4 GUI 中创建一个导航工具栏,但我无法让它工作,我必须承认我主要是复制粘贴了这段代码,但我并没有真正理解它。如果您能告诉我如何添加 NavigationToolbar 并解释它是如何制作的,那就太好了。先感谢您。

顺便说一句。我见过This Post,但我相信它与我的不同,我不知道如何使用它。

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 matplotlibWidget(QtGui.QWidget):

    def __init__( self, parent = None ):
        QtGui.QWidget.__init__( self, parent )
        self.canvas = MplCanvas()
        #self.toolbar = self.canvas.toolbar #Dunno How :(

        self.vbl = QtGui.QVBoxLayout()
        self.vbl.addWidget( self.canvas )
        self.setLayout( self.vbl )

【问题讨论】:

    标签: python python-2.7 user-interface matplotlib pyqt4


    【解决方案1】:

    我设法解决了这个问题,代码应该是这样的

    from PyQt4 import QtGui
    from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas
    from matplotlib.backends.backend_qt4 import NavigationToolbar2QT as NavigationToolbar
    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 matplotlibWidget(QtGui.QWidget):
    
        def __init__( self, parent = None ):
            QtGui.QWidget.__init__( self, parent )
            self.canvas = MplCanvas() #create canvas that will hold our plot
            self.navi_toolbar = NavigationToolbar(self.canvas, self) #createa navigation toolbar for our plot canvas
    
            self.vbl = QtGui.QVBoxLayout()
            self.vbl.addWidget( self.canvas )
            self.vbl.addWidget(self.navi_toolbar)
            self.setLayout( self.vbl )
    

    【讨论】:

    • 我想知道是否有办法在画布类声明中声明NavigationToolbar,而不是在小部件/ui 中。通常我的 ui 文件是从 QtDesigner 自动生成的,然后我只需将它们导入主程序并围绕它们构建逻辑,因此理想情况下,该程序中不应出现像 .addWidget 这样的东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-17
    • 1970-01-01
    相关资源
    最近更新 更多