2017-01-25 14 views
-1

皆さんpythonクラスget member addressee?

私は長い間、C++プログラムを使用していました。

最近、私はPythonを使ってGUIプログラムを作成します。

しかし、私はPythonのクラスについてはわかりません。

問題はこのようです。

このGuiプログラムでは、ユーザーは多くのビューを追加できます。ボタンをクリックしてビューを変更します。

私のコードです。私はこの

class LoadingView(): 
    def __init__(self): 
     self.idx=0 
     self.view = pg.GraphicsLayoutWidget() 
     self.w1 = self.view.addPlot() 
     self.view.nextRow() 
     self.w2 = self.view.addPlot() 
     self.view.nextRow() 
     self.w3 = self.view.addPlot() 
     self.view.nextRow() 
     self.w4 = self.view.addPlot() 

のようにクラスに要素を入れて、私は、インスタントクラスをクリートと私はボタンを押すと

ついに
 self.TreeIdx = self.TreeIdx + 1 
     self.AddNodeToTree(SetDlg.EditBoxName.text()) 
     Loding_view = LoadingView() 
     self.LView.append(LoadingView) 
     self.gridLayout_2.addWidget(Loding_view.view, 0, 0, 1, 1) 

が、私は、ビューを変更するために実装したいアレイにそれを置く

  self.gridLayout_2.addWidget(self.LView[int(Text.split('.')[0]) - 1].view, 0, 0, 1, 1) 

が返されましたが、AttributeErrorが返されました:class LoadingViewには属性 'view'がありません 実装方法はわかりません。お手伝いが必要です... ありがとうございます!

+3

'Loding_view'の代わりに' LoadingView'を追加しました。 – BrenBarn

+0

助けてくれてありがとう –

答えて

-1

__ init __関数に 'view'を含める必要があります。今あなたは自己しか持っていません。

class LoadingView: 
    def __init__(self, 
       idx=None, 
       view=None, 
       w1=None, 
       w2=None, 
       w3=None, 
       w4=None, 
       Nrows=None, 
       ): 
     self.idx=idx if idx is not None else 0 
     self.view=view if view is not None else pg.GraphicsLayoutWidget() 
     self.w1=w1 
     self.w2=w2 
     self.w3=w3 
     self.w4=w4 
     self.Nrows=Nrows 

    def datafill(self): 
     for i in self.Nrows: 
      self.__dict__['w'+str(i+1)]=self.view.addPlot() 

Loading_view=LoadingView() 
Loading_view.datafill() 

あなたが代わりに明示的に定義された用語のリストが、私は辞書を使用して明示的に定義された用語を超えるがループを示してきた道wを作ることができます。

が、このお試しください。また、このメソッドは、クラスのインスタンスを定義するときにそれらを指定しないと、viewおよびidxのデフォルト値を設定します。

+1

コンストラクタに渡すことは問題ではありません。 @ BrenBarnのコメントを参照してください。 –

+0

あなたの間違った答えを修正するために私にフラグを立てないでください。 –

+0

私は誰にもフラグを立てなかった。私はあなたが何を意味するかを見ます。 – Samwise

関連する問題