以下是我目前使用的代码:
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是:
self.line1 = matplotlib.lines.Line2D([1,2,3,4,5], [1,2,3,4,5])
我尝试了两种方法(列表和行对象)来查看是否出现了任何奇怪的错误。 回到重新绘制图表时,我必须清除其中一个轴(plt.cla公司()),然后绘制到它(自转轴图(stuffx,stuffy)),然后重新绘制图形。为了确保每次调用update方法时两个轴都得到更新,我必须在轴之间切换(plt.sca公司(要清除的轴)并重复此过程,然后重新绘制。你知道吗
我希望这能帮助其他遇到这个问题的人。你知道吗
相关问题 更多 >
编程相关推荐