首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Matplotlib导航工具栏:删除“编辑曲线、线和轴参数”

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

Stack Overflow用户
提问于 2015-09-30 15:21:23
回答 1查看 2.4K关注 0票数 6

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

我已经通过Qt设计器插入了一个MatplotLib小部件,并成功地使用barh绘制了相当好的水平条。接下来,我尝试并成功地通过matplotlib.backends.backend_qt4agg.NavigationToolbar2QT插入了一个功能NavigationToolBar。

然后,在这个线程(和类似的线程)之后,我设法编辑了我想要显示在工具栏上的按钮.How to modify the navigation toolbar easily in a matplotlib figure window?

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

我还没有找到任何讨论这个特定工具栏按钮的线程(只有这个matplotlib: Qt4Agg toolbar's irritating bug)

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

代码语言:javascript
复制
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')]

这成功地嵌入了工具栏,但是“编辑”按钮仍然存在。

非常感谢你的洞察力。问候

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-15 12:02:15

您可以通过向NavigationToolbar类添加以下内容来删除它

代码语言:javascript
复制
    actions = self.findChildren(QtGui.QAction)
    for a in actions:
        if a.text() == 'Customize':
            self.removeAction(a)
            break

您不能通过修改toolitems删除这个特定按钮的原因是,在添加了所有toolitems条目之后,它被单独添加到工具栏中。

代码语言:javascript
复制
    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')
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32869888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档