2017-10-08 60 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()