2017-11-19 5 views
0

このコードは本の中にありますKivy - 対話型アプリケーションとゲームPython - Second Edition Roberto Ulloaキャンバスの色はプロパティ(Kivyブック)にバインドされています:TypeError: 'NoneType'オブジェクトは反復不可能です

#:kivy 1.9.0 

<[email protected]>: 
    bcolor: .1, .1, .1, 0 
    halign: 'center' 
    font_size: '20px' 
    size: self.texture_size[0]+20, self.texture_size[1]+20 
    y: 50 

    canvas.before: 
     Color: 
      rgba: self.bcolor 

     Rectangle: 
      pos: self.pos 
      size: self.size 

subtitle.kvファイル内SubtitleLabelから導出され、ビデオプレーヤーで字幕を表示するために使用されるクラスは、(プレイヤーのプロジェクトは、書籍の完全な部分を取るチュートリアルです。)

bcolor字幕の不透明度を変更するには、video.pyのPythonコードから使用されます。

def display_subtitle(self, sub): 
    self.sub = sub 
    self.slabel.text = sub['content'] 
    self.slabel.bcolor = .1, .1, .1, .8 

完全なコードはherehereを見出すことができます。

最後の2行は、slabelという名前のSubtitleインスタンスの属性を変更します。コードは書き込まれるため、実行されません。エラー:self.bcolorNoneに等しい理由は何

[WARNING] stderr:  11:  Color: 
[WARNING] stderr: >> 13:   rgba: self.bcolor 
[WARNING] stderr:  14: 
[WARNING] stderr:  15:  Rectangle: 
[WARNING] stderr: ... 
[WARNING] stderr: TypeError: 'NoneType' object is not iterable 


のPython 3.6.1 - Kivy 1.10.0 - あなたがこれを理解し得るように、Windows 7それは私に解決策を見つけるためにいくつかの時間がかかった(64ビット)

答えて

0

は、(これはKivyを学ぶための本です)あなたが必死に検索している場合は投稿してください...

bcolorは、Kivyプロパティでなければなりません。これはPythonコードで行う必要があります。 kvファイルに関連付けられたpyファイルがないので、Subtitleが使用されている場所では、video.pyで実行できます。クラスはPythonの構文を使って宣言しなければなりません。

... 
Builder.load_file('video.kv') 
Builder.load_file('subtitle.kv') 

class Subtitle(Label):     <-------------- 
    bcolor = ListProperty(None)   <-------------- 

class Video(KivyVideo): 
    image = ObjectProperty(None) 
    surl = StringProperty(None) 

    def on_state(self, instance, value): 
    ... 

その作品:私は私はKVファイルに<[email protected]>から@Labelを除去しvideo.pyでこれを追加(PYするKVから基底クラス宣言を移動

enter image description here

関連する問題