2016-05-06 36 views
0

kvファイルのRoundedRectangleを使用してウィジェットの背景を描画しました。今度は別のウィジェットを作成したいのですが、このウィジェットとの唯一の違いは背景色です。プロパティアプローチ(@inclementで提案されている)は私に奇妙なエラーを与えます。何らかの理由で、私が別の場所(例えばcursor_color)で使用したときにプロパティが動作するので、ここで動作すると期待しています。だから、新しい質問は、なぜその財産が認識されていないのですか? Kivyウィジェットのキャンバス要素へのアクセス

<Message>: 
    BoxLayout: 
     colour_property: 0.99, 0.99, 0.99, 1 
     canvas: 
      Color: 
       rgba: 0.8, 0.8, 0.8, 1 
      RoundedRectangle: 
       pos: root.pos 
       size: self.size 
      Color: 
       rgba: self.colour_property 
      RoundedRectangle: 
       pos: root.x + 1, root.y + 1 
       size: self.width - 2, self.height - 2 

     TextInput: 
      pos: root.pos 
      size: root.size 

とPythonコード:

class Message(Widget): 
    colour_property = ListProperty([0.99, 0.99, 0.99, 1]) 
    def __init__(self, **kwargs): 
     self.colour_property = ListProperty([0.99, 0.99, 0.99, 1]) 
     super(Message, self).__init__(**kwargs) 

rgba: self.colour_propertyラインの解析時にエラーが発生します。

答えて

1

値を転送するためにプロパティを使用します。

BoxLayout: 
    colour_property: 1, 1, 1, 1 
    canvas: 
     Color: 
      rgba: 0.8, 0.8, 0.8, 1 
     RoundedRectangle: 
      pos: root.pos 
      size: self.size 
     Color: 
      rgba: self.colour_property 
     RoundedRectangle: 
      pos: root.x + 1, root.y + 1 
      size: self.width - 2, self.height - 2 

    TextInput: 
     pos: root.pos 
     size: root.size 

あなたはまた、/たいかもしれませんが(すなわち、プロパティを持つクラスを作成し、代わりにそれのためのルールを作る)あなたのPythonコードでプロパティを宣言する必要があります。

+0

なんらかの理由で、そのプロパティを認識しません。私があなたが示したように、kvの '__init__'の外でそれを定義しましたが、それでも解析エラーが出ます。何がここで間違っているかもしれないかに関するアイデア?コードを表示するために投稿を編集しました – Leva7

+0

あなたが今投稿したkvはBoxLayout用です。メッセージを作成することを意味しましたか? – inclement

+0

メッセージ参照の部分を省略しましたが、ここでは – Leva7

関連する問題