以编程方式切换matplotlib NavigationToolbar上的按钮状态

2024-10-02 10:18:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我嵌入了一个带有定制的NavigationToolbar2WxAgg的图形,这样我就可以(希望)轻松地控制工具栏的状态。我想能够切换缩放和平移按钮,但我有一些困难,使它正常工作。我的工具栏代码是

class CustomNavToolbar(NavigationToolbar2WxAgg):
    def __init__(self, *args, **kwargs):
        NavigationToolbar2WxAgg.__init__(self, *args, **kwargs)

        self.DeleteToolByPos(7)  # Deletes the adjust subplots button

    @property
    def IsActive(self):
        return self._active is not None

    def DeactivateAll(self):
        if self._active == 'PAN':
            self.pan('off')
        elif self._active == 'ZOOM':
            self.zoom()

我只需调用DeactivateAll()方法来关闭当前处于活动状态的任何模式。不幸的是,这不太好用。该模式被禁用,但按钮本身保持切换状态。当我再次单击按钮时,模式已启用,但按钮不可更改。在

我的googlefu无法想出一个有效的解决方案,有人能告诉我正确的方法吗?在


Tags: 方法代码self图形init状态def模式
1条回答
网友
1楼 · 发布于 2024-10-02 10:18:14

我将通过编程方式按下按钮来实现这一点。在

如果您查看zoom的代码,则有一行

self.ToggleTool(self.wx_ids['Pan'], False)

我假设会关闭按钮,所以只需包含一个类似的行:

^{pr2}$

我想你可以让这更简单:

 def DeactivateAll(self):
    self.ToggleTool(self.wx_ids['Pan'], False)
    self.ToggleTool(self.wx_ids['Zoom'], False)

让电话回电来做他们的工作。在

相关问题 更多 >

    热门问题