내가 작업중인 PyQt4
앱에 matplotlib
이 삽입되어 있습니다. 문제는 동적으로 그림에 하위 그림을 추가 할 때 그림이 모든 추가 된 하위 그림으로 압축 될 때입니다. 나는이 그림을 QScrollArea
으로 설정하여이 문제를 해결할 수 있다고 생각했지만, 그것이 작동하지 않는다 (내가 말할 수있는 한). 다음은 내가 생각했던 것의 예다.QScrollWidget의 PyQt4 + matplotlib
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_()
모든 그래프가 어떻게 동일한 눈에 보이는 공간에 나타나게되는지주의해라. 다른 그래프를 보려면 스크롤하지 않아도됩니다. 이 작업을 정확하게 수행하는 방법을 모르겠습니다.
누구나이 작업을 수행하는 방법이나 다른 방법을 알고 있습니까?
설정 해제 스크롤 막대를 표시 할 ScollArea의 크기 조정 :