これまでに使用したコードは次のとおりです。
class Main:
app = QtGui.QApplication(sys.argv)
QtCore.QObject.connect(app, SIGNAL("lastWindowClosed()"), app, SLOT("quit()"))
mainWidget = Gui.PointPredictorGui()
app.setActiveWindow(mainWidget)
mainWidget.show()
app.exec()
class PointPredictorGui(QtGui.QMainWindow):
def __init__(self, parent = None):
QtGui.QMainWindow.__init__(self)
frame = QtGui.QFrame()
hobo = QtGui.QHBoxLayout()
self.graphFigure = plt.Figure()
self.graphCanvas = FigureCanvas(self.graphFigure)
self.ax1 = self.graphFigure.add_subplot(111)
self.ax2 = self.ax1.twinx()
self.check1 = QtGui.QCheckBox("1")
self.check2 = QtGui.QCheckBox("2")
hobo.addWidget(self.graphCanvas)
hobo.addWidget(self.check1)
hobo.addWidget(self.check2)
frame.setLayout(hobo)
self.setCentralWidget(frame)
self.check1.stateChanged.connect(self.updateGraph)
self.check2.stateChanged.connect(self.updateGraph)
def updateGraph(self):
if self.check1.isChecked(): self.ax1.plot([1,2,3,4,5], [1,2,3,4,5], '--')
elif not self.check1.isChecked(): self.eraseMethod()
if self.check2.isChecked(): self.ax2.plot([1,2,3,4,5], [500,400,300,200,100], '--')
elif not self.check2.isChecked(): self.eraseMethod()
self.graphCanvas.draw()
def eraseMethod(self):
self.graphFigure.clear()
私が実現しようとしているのは、対応するチェックボックスがチェックされているかどうかに応じて、軸 1 または 2 に起因する線を表示することです。
両方がチェックされている場合:
2 番目のみがチェックされている場合:
あなたはアイデアを得る。
私が抱えている問題は、これを正しい方法で実装してやりたいことを容易にすることも、どのクラスからどのメソッドを使用するかを理解することもできないことです。私が試したほとんどすべての結果がまったく変化しないか、グラフ部分が完全に消えます。
要約すると、これは私がやりたいことです: チェックボックスがチェックされたとき (完了) に線が表示されます。
また、必要に応じて毎回全体を再描画しても問題ありません。

