Вертикальная прокрутка нескольких графиков в TkinterPython

Программы на Python
Anonymous
Вертикальная прокрутка нескольких графиков в Tkinter

Сообщение Anonymous »

Я хотел бы нарисовать несколько графиков с помощью Matplotlib, добавить их в фрейм Tkinter (сложить их один под другим) и иметь возможность вертикально прокручивать между графиками.
Каждый график должен заполнять направление x и иметь минимальную высоту по оси Y, чтобы, если общая высота нескольких графиков превышает высоту окна, прокрутка должна быть включена.
Я нашел способ прокрутите один большой рисунок (состоящий из нескольких подграфиков), но я вынужден использовать библиотеку, которая не может создавать подграфики, поэтому моя идея заключалась в том, чтобы расположить отдельные графики один под другим, рассматривая их как виджеты Tkinter.На данный момент у меня есть следующее, но, как вы можете видеть, полоса прокрутки присутствует, но не работает.
Любая информация будет полезна.

Код: Выделить всё

from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg

from matplotlib.figure import Figure

f = Figure()
a = f.add_subplot(111)

g = Figure()
b = g.add_subplot(111)

from tkinter import *
root=Tk()
frame=Frame(root)
frame.pack(expand=True, fill=BOTH)
canvas=Canvas(frame,bg='#FFFFFF',scrollregion=(0,0,500,500))
vbar=Scrollbar(frame,orient=VERTICAL)
vbar.pack(side=RIGHT,fill=Y)
vbar.config(command=canvas.yview)
canvas.config()
canvas.config(yscrollcommand=vbar.set)
canvas.pack(side=LEFT,expand=True,fill=BOTH)

middle = Frame(canvas, bg="yellow")
middle.pack(side="bottom", expand=True, fill="both")

canvas_1 = FigureCanvasTkAgg(f, middle)
canvas_1.get_tk_widget().pack(expand=True, fill="both")
canvas_1.draw()

bottom = Frame(canvas, bg="blue")
bottom.pack(side="bottom", expand=True, fill="both")

canvas_2 = FigureCanvasTkAgg(g, bottom)
canvas_2.get_tk_widget().pack(expand=True, fill="both")
canvas_2.draw()

root.mainloop()
который создает:
Изображение

Изображение


Подробнее здесь: https://stackoverflow.com/questions/790 ... in-tkinter

Вернуться в «Python»