Python Matplotlib和Tkinter-将轴导航模式设置回无

Python Matplotlib和Tkinter-将轴导航模式设置回无,python,matplotlib,tkinter,Python,Matplotlib,Tkinter,我正在尝试用python 3构建一个tkinter应用程序,该应用程序集成matplotlib的FigureCastKagg后端。我使用NavigationToolbar2TkAgg创建了一个导航栏小部件,它创建了将轴导航模式更改为“平移”和“缩放”的按钮。但是,默认情况下创建的按钮不会将导航模式更改回默认模式(无)。我尝试创建一个自定义函数并将其绑定到一个按钮:self.select\u button=tk.button(self,command=lambda:self.ax.set\u na

我正在尝试用python 3构建一个tkinter应用程序,该应用程序集成matplotlib的FigureCastKagg后端。我使用NavigationToolbar2TkAgg创建了一个导航栏小部件,它创建了将轴导航模式更改为“平移”和“缩放”的按钮。但是,默认情况下创建的按钮不会将导航模式更改回默认模式(无)。我尝试创建一个自定义函数并将其绑定到一个按钮:
self.select\u button=tk.button(self,command=lambda:self.ax.set\u navigate\u mode(None)).pack(side=tk.LEFT,anchor=tk.W)
但单击按钮时轴仍处于平移模式。较大的代码段:

import tkinter as tk
import matplotlib.pyplot as plt 
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from matplotlib.backends.backend_tkagg import NavigationToolbar2TkAgg
from matplotlib.figure import Figure
matplotlib.use('TkAgg')

class Viewer(tk.Frame):
    def __init__(self, parent, collection=None, with_toolbar=True):
        tk.Frame.__init__(self, parent)
        self.fig = plt.Figure(figsize=(8, 6)) 
        self.ax = self.fig.add_subplot(111)
        self.canvas = FigureCanvasTkAgg(self.fig, master=self)
        self.navbar = NavigationToolbar2TkAgg(self.canvas, self)
        self.select_button = tk.Button(self,command = 
            lambda:self.ax.set_navigate_mode(None))
            .pack(side=tk.LEFT,anchor=tk.W)
以下是我尝试使用的文档:


谢谢您的帮助。

导航工具栏2TKAGG类提供了方法
pan
zoom
来分别切换平移和缩放模式。不要直接调用
set\u navigate\u mode
,而是使用
get\u navigate\u mode
检查当前导航模式,然后调用相应的切换方法

self.navbar = NavigationToolbar2TkAgg(self.canvas, self)
...
if self.ax.get_navigate_mode == 'PAN':
    self.navbar.pan()
elif self.ax.get_navigate_mode == 'ZOOM':
    self.navbar.zoom()