在覆盖的类中访问PyQt5 QChartView的传递参数

时间:2017-10-08 20:07:14

标签: python python-3.x pyqt pyqt5

我正在尝试使用PyQt5 QtChart模块在两个不同的选项卡小部件上绘制多个图表,并使用自定义鼠标和键事件来放大和缩小图表。

所以我创建了另一个类来覆盖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):
        ...

在类Window中是对my_view的调用:

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

可以调用Window类,可以在窗口类之外访问该图表:

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?

1 个答案:

答案 0 :(得分:0)

正如ekhumoro在评论中所述,解决方案是

self.chart().zoomIn()