2017-10-08 429 views
0

我想用PyQt5 QtChart模块来绘制两个不同的标签小部件与自定义鼠标和关键事件放大和缩小图表上的多个图表。访问传递的参数的PyQt5 QChartView里面的重写类

所以我创建了另一个类覆盖QChartView类事件,如如下:

class my_view(QChartView): 
    def keyPressEvent(self,event): 
     if event.key() == Qt.Key_Plus: 
      ex.my_chart.zoomIn()   # ex.chart is accessed from outside 
     if event.key() == Qt.Key_Minus:  # self.passed_parameter would be the solution 
      ex.my_chart.zoomOut() 

    def mousePressEvent(self, event): 
     ... 

    def mouseMoveEvent(self, event): 
     ... 

    def mouseReleaseEvent(self, event): 
     ... 

,并在类窗口是调用my_view:

self.my_chart = QChart() 
self.my_chart_view = my_view(self.my_chart, self.parent) 

有窗口的呼叫图表可以从窗口类以外访问的类:

if __name__ == '__main__': 
app = QApplication(sys.argv) 
ex = Window() 
ex.show() 
sys.exit(app.exec_()) 

问题就出来了,当我创造了这样my_view的两个实例:

self.my_chart = QChart() 
self.my_chart_view = my_view(self.my_chart, self.parent) 
self.my_chart1 = QChart() 
self.my_chart1_view = my_view(self.my_chart1, self.parent1) 

,如果我放大第二个,第一个是因此放大了其他选项卡上......

我问题是,如果我不知道它是如何在类内部命名的,我如何从被覆盖的类中访问self.my_chart?

+0

为什么不'self.chart()。zoomIn()'? – ekhumoro

回答

0

由于ekhumoro在他的评论中指出,该解决方案是

self.chart().zoomIn()