Python Matplotlib导航工具栏:删除";“编辑曲线、直线和轴参数”;

Python Matplotlib导航工具栏:删除";“编辑曲线、直线和轴参数”;,python,matplotlib,plot,pyqt,toolbar,Python,Matplotlib,Plot,Pyqt,Toolbar,最近,我开始探索在Qt设计器中开发UI,并通过PyQt编辑它们。 事情进展得相当顺利,但我目前仍在努力解决以下问题: 我通过Qt设计器插入了一个MatplotLib小部件,并使用barh很好地绘制了水平条。接下来,我尝试并成功地通过matplotlib.backends.backend_qt4agg.NavigationToolbar2QT插入了一个功能导航工具栏 然后,按照这个线程(以及类似的线程),我设法编辑了我想在工具栏上显示的按钮 它适用于除最后一个按钮外的每个按钮,带有一个复选框图形,

最近,我开始探索在Qt设计器中开发UI,并通过PyQt编辑它们。 事情进展得相当顺利,但我目前仍在努力解决以下问题:

我通过Qt设计器插入了一个MatplotLib小部件,并使用barh很好地绘制了水平条。接下来,我尝试并成功地通过matplotlib.backends.backend_qt4agg.NavigationToolbar2QT插入了一个功能导航工具栏

然后,按照这个线程(以及类似的线程),我设法编辑了我想在工具栏上显示的按钮

它适用于除最后一个按钮外的每个按钮,带有一个复选框图形,描述为“编辑曲线、直线和轴参数”。 在这种情况下,我真的想删除这个按钮,因为它在移动鼠标时不断调整绘图大小,在这种情况下,我不需要这个按钮

我还没有找到任何讨论这个特殊工具栏按钮的帖子(就这一个)

用于插入工具栏和当前编辑按钮的代码如下所示:

from matplotlib.backends.backend_qt4agg import NavigationToolbar2QT

class currentUI(QtGui.QWidget):

    def __init__(self):
        super(currentUI,self).__init__()
        (...)
        uic.loadUi('portfolioManager.ui',self)
        self.initUI()
        (...)
    def initUI(self):        
        self.setWidgetsPropertiesAndActions()
    (...)
    def setWidgetsPropertiesAndActions(self):
        (...)
        self.navi_toolbar=NavigationToolbar(self.mplwidgetExposures, self)
        self.LayoutPlot.addWidget(self.navi_toolbar)
(...)
class NavigationToolbar(NavigationToolbar2QT):

    toolitems = [t for t in NavigationToolbar2QT.toolitems if
                 t[0] in ('Home','Pan', 'Zoom', 'Save','Subplots')]
这将成功嵌入工具栏,但“编辑”按钮仍保留

非常感谢您提供的任何见解。
关于

您可以通过向
导航工具栏
类添加以下内容来删除它

    actions = self.findChildren(QtGui.QAction)
    for a in actions:
        if a.text() == 'Customize':
            self.removeAction(a)
            break
无法通过修改
tooltimes
删除此特定按钮的原因是,在添加了所有
tooltimes
条目后,它会被单独添加到工具栏中

    for text, tooltip_text, image_file, callback in self.toolitems:
        if text is None:
            self.addSeparator()
        else:
            a = self.addAction(self._icon(image_file + '.png'),
                                     text, getattr(self, callback))
            self._actions[callback] = a
            if callback in ['zoom', 'pan']:
                a.setCheckable(True)
            if tooltip_text is not None:
                a.setToolTip(tooltip_text)

    if figureoptions is not None:
        a = self.addAction(self._icon("qt4_editor_options.png"),
                           'Customize', self.edit_parameters)
        a.setToolTip('Edit curves line and axes parameters')

非常感谢您的见解!按照您的想法,我在NavigationToolbar子类中生成了一个用于删除操作的函数,效果非常好。干杯