Skip to content

NavigationToolbar2Tk behave unexpected when using it in with Tkinter Canvas #17584

Closed
@andreys42

Description

@andreys42

Bug report

Bug summary

NavigationToolbar2Tk behave unexpected when using it in with Tkinter Canvas(see attached gif for more details). When scroll a little bit my Canvas then tools like zoom, move (e.t.c) works like canvas area still locate on the previous position.

import tkinter
from tkinter import *

from matplotlib.backends.backend_tkagg import (
    FigureCanvasTkAgg, NavigationToolbar2Tk)
from matplotlib.backend_bases import key_press_handler
from matplotlib.figure import Figure

import numpy as np

root = tkinter.Tk()
root.wm_title("Embedding in Tk")

fig = Figure(figsize=(5, 40), dpi=100)
t = np.arange(0, 3, .01)
fig.add_subplot(111).plot(t, 2 * np.sin(2 * np.pi * t))

canvas = FigureCanvasTkAgg(fig, master=root)  # A tk.DrawingArea.
canvas.draw()

scroll_y = Scrollbar(canvas.get_tk_widget(),orient="vertical", command=canvas.get_tk_widget().yview)
scroll_y.grid(row=0, column=1, sticky="ns")

canvas.get_tk_widget().configure(yscrollcommand=scroll_y.set, scrollregion=canvas.get_tk_widget().bbox("all"))

toolbar = NavigationToolbar2Tk(canvas, root)
toolbar.update()

canvas.get_tk_widget().pack(side=tkinter.TOP, fill=tkinter.BOTH, expand=1)

tkinter.mainloop()

Actual outcome

ezgif com-video-to-gif

``

Expected outcome
NavigationToolbar2Tk update its action area with new Scrollbar status

Matplotlib version
3.1.3

  • Operating system: Windows 10
  • Matplotlib version: 3.1.3
  • Matplotlib backend (print(matplotlib.get_backend())): TkAgg
  • Python version: 3.7
  • Other libraries: Tkinter version 8.6

All packages installed using updated pip

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions