Полоса прокрутки в tkinter, для matplotlib - PullRequest
0 голосов
/ 11 мая 2019

У меня мало опыта, как сочетать matplotlib с tkinter или pyqt.Мне нужна горизонтальная полоса прокрутки на диаграмме matplotlib.Я хочу увеличить график по горизонтали и прокрутить график от начала до конца данных, загружаемых из файла.Изучив примеры, я добавил полосу прокрутки.Но она совершенно не реагирует на график.)

И процесс не заканчивается, когда я закрываю окно (как удалить не понял, пример взят здесь введите ссылку )

import tkinter
from tkinter import *
from matplotlib.backends.backend_tkagg import (
    FigureCanvasTkAgg, NavigationToolbar2Tk)
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

root = tkinter.Tk()

x = pd.read_csv('file.txt',
                    index_col='DATE',
                    parse_dates=True,
                    infer_datetime_format=True)
z = x.iloc[:, 3].values
N = len(z)
ind = np.arange(N)
fig, ax = plt.subplots()
ax.plot(ind, z)

canvas = FigureCanvasTkAgg(fig, master=root)
canvas.show()
canvas.get_tk_widget().pack(side=tkinter.TOP, fill=tkinter.BOTH, expand=1)

toolbar = NavigationToolbar2Tk(canvas, root)
toolbar.update()
canvas.get_tk_widget().pack(side=tkinter.TOP, fill=tkinter.BOTH, expand=1)

scrollbar = tkinter.Scrollbar(master=root, orient=HORIZONTAL)
scrollbar.pack(side=tkinter.BOTTOM, fill=X)

tkinter.mainloop()

После добавления строки

scrollbar["command"] = canvas.get_tk_widget().xview

Как указывалось - MaxiMouse.График прокручивается, но не по всей длине.Мне нужен свиток для работы со всеми данными после увеличения. Я отобразил это в конце видео.

enter image description here

1 Ответ

0 голосов
/ 11 мая 2019

Поставьте это перед tkinter.mainloop() звонком:

scrollbar["command"] = canvas.get_tk_widget().xview
canvas.get_tk_widget()["xscrollcommand"] = scrollbar.set
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...