2017-10-08 6 views
0

PyQt5 QtChartモジュールを使用して、2つの異なるタブウィジェットに複数のチャートをプロットし、カスタムのマウスイベントとキーイベントを使用してグラフを拡大/縮小します。オーバーライドされたクラス内の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): 
     ... 

とクラスWindowに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_()) 

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) 

と私は二番目にズームした場合、最初の一つは、他のタブにズームインした私のそう

...:私はこのようなmy_viewの2つのインスタンスを作成したときに

問題が出てきました問題は、どうやってクラスの中で名前がつけられているのか分からなければ、上書きされたクラスの中からself.my_chartにアクセスすることができますか?彼のコメントで述べたようekhumoro

+0

なぜだけではなく 'self.chart()。zoomIn()'でしたか? – ekhumoro

答えて

0

、解決策は

self.chart().zoomIn() 
関連する問題