2016-10-19 35 views
0

私はPythonクラス(BoxLayoutウィジェットから来たもの)とそのクラスのkvプロファイルのプロパティを結びつけようとしています。Kivy Python - 引数を渡してkvとpythonファイルを結ぶ

私がしようとしているのは、クラスに値を渡し、その値をkvファイルのTextInput id(このクラスのkv記述)の隣に表示することです。コードを実行したときにエラーが発生しました:

これはむしろ単純であるはずですが、私は複雑すぎると思います。私のコードの いくつかのビットが、私はそれがクリアされている願っています:私はあなたのコードを見ているように、私は見ていなかった

<SomeClass>: 
    Label: 
     text: "Number of rooms" 

    TextInput: 
     multiline: False 
     id: inputId 
     on_text_validate: root.printInput(inputId.text) 

答えて

0

#at some point in my main code I call SomeClass  
box=SomeClass() 
box.add_widget(SomeClass.addBoxClass(someNumber)) #someNumber is a value that I want to print in def printInput, next to the kv file's TextInput id. 

#then this is the class 
class SomeClass(BoxLayout): 
def __init__(self, **kwargs): 
    super(NumOfRoomsClass, self).__init__(**kwargs) 
    self.number = None 

def addBoxClass(self,someNumber):   
    self.number = someNumber #This is where I get my error 
    #create and rern a label 
    boxLabel = BoxLayout()   
    Lab = Label(text= self.number) 
    boxLabel.add_widget(Lab) 
    return (boxLabel) 

def printInput(self, text): 
    input= int(text) 
    print ("self.number = ", self.number , "input = ",input) #This is what I'm aftre 

と私の.kvファイルI`veではこれを得ましたどこでaddBoxClass()関数を呼び出しましたか?

SomeClassのインスタンスを作成しました。

self.number = None 

また、テキスト入力を検証すると、printInputが呼び出されます。 addBoxClass()が呼び出されていません。

0

あなたのpythonファイルから呼び出そうとしているsomeNumberのように思えますが、まだ定義されていません。

#at some point in my main code I call SomeClass  
box=SomeClass() 
box.add_widget(SomeClass.addBoxClass(someNumber)) #someNumber is a value that I want to print in def printInput, next to the kv file's TextInput id. 

あなたはそれ

を使用する前に

#at some point in my main code I call SomeClass 
someNumber = 1 
box=SomeClass() 
box.add_widget(SomeClass.addBoxClass(someNumber)) #someNumber is a value that I want to print in def printInput, next to the kv file's TextInput id. 

someNumberが値を指定する必要がありますする必要があります

関連する問題