MatplotlibアニメーションをPyQT4 GUIに埋め込むアプリケーションを作成したいと思います。私は、FigureCanvasQTAggオブジェクトがどのように機能するかの基礎を理解しようとしており、作成後の軸の制限を変更するのに問題があります。以下のプログラムでは、FigureCanvasQTAggオブジェクトを使用して非常に単純な図が生成されます。ボタンを押すと、結果のプロットのx軸の制限が変更されます。 (次のコードは、this postの末尾にコードの簡易版であることに注意してください。)PyQT4内のMatplotlibの図形軸を変更する
import sys
from PyQt4 import QtGui
from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.figure import Figure
class Window(QtGui.QDialog):
def __init__(self):
super(Window, self).__init__()
self.fig = Figure()
self.canvas = FigureCanvas(self.fig)
self.ax = self.fig.add_subplot(111) # create an axis
self.ax.hold(False) # discards the old graph
self.ax.set_xlim([0, 100])
self.ax.set_ylim([-10, 10])
self.ax.set_xlabel('Random x label')
self.button = QtGui.QPushButton('Adjust axes')
self.button.clicked.connect(self.axis_adjust)
# set the layout
layout = QtGui.QVBoxLayout()
layout.addWidget(self.canvas)
layout.addWidget(self.button)
self.setLayout(layout)
self.canvas.draw()
def axis_adjust(self):
self.ax.set_xlim([0, 200])
self.ax.set_xlabel('New label')
app = QtGui.QApplication(sys.argv)
ex = Window()
sys.exit(app.exec_())
を残念ながら、私は私のプログラムを実行して、「軸の調整」ボタンをクリックしたとき、それは絶対に効果がありません。私が根本的に理解していないことの1つは、self.canvas.draw()
という行が何であるかです。 a Matplotlib tutorialから、私はこの数字が実際にGUIウィンドウ内に現れるという印象を受けました...しかし、これは当てはまりません。self.canvas.draw()
という行をコメントアウトすると、FigureはGUIウィンドウ内に表示されます。実際には、FigureをGUIウィンドウに表示させる行self.setLayout(layout)
です。これは私が読んだものから意味をなさないものです。この機能の理解が私の不足は私の問題の根本にあるようです...
-
FYI、あなたのUIの階層が
QtGui.QDialog
になりありがとうございました! – dyson