PyQt4 + matplotlib в QScrollWidget
я имеюmatplotlib
встроен вPyQt4
приложение, которое яЯ работаю над. Проблема в том, что когда я динамически добавляю подзаговор к рисунку, рисунки сжимаются с каждым добавленным подзаговором. Я думал, что смогу решить эту проблему, установивQScrollArea
но это нет работа (насколько я могу судить). Вот's пример того, что я думал, будет работать
import os
os.environ['QT_API'] = 'pyside'
from PySide.QtGui import *
from PySide.QtCore import *
import matplotlib
from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg
from matplotlib.figure import Figure
class Canvas(FigureCanvasQTAgg):
def __init__(self, parent=None):
self.figure = Figure()
super(Canvas, self).__init__(self.figure)
ax = self.figure.add_subplot(1,1,1)
ax.plot([1,2,3])
self.draw()
def add_subplot(self, data=[]):
rows = len(self.figure.axes) + 1
for index, axes in enumerate(self.figure.axes, start=1):
axes.change_geometry(rows, 1, index)
ax = self.figure.add_subplot(rows, 1, index+1)
ax.plot(data)
self.draw()
class Main(QWidget):
def __init__(self, parent=None):
super(Main, self).__init__(parent)
self.canvas = QScrollArea(self)
self.canvas.setWidget(Canvas(self))
self.canvas.setWidgetResizable(True)
for x in range(5):
self.canvas.widget().add_subplot()
layout = QVBoxLayout(self)
layout.addWidget(self.canvas)
app = QApplication([])
main = Main()
main.show()
app.exec_()
Заметьте, как все графики разбиты вместе, чтобы показать их в одном и том же видимом пространстве? Я хочунужно прокрутить, чтобы увидеть другие графики. Я'Я не уверен, как именно это сделать.
Кто-нибудь знает, как сделать это или другой способ сделать это?