2016-07-24 35 views
0

私はkivyでアプリケーションを作っています.kvファイルには、MainScreenという2つのTextInputボックスがあります。ボタンを押すと、画面はLoggedInScreenに変わります。 MainScreenのTextInputボックスからLoggedInScreenに入力を渡すにはどうすればよいのですか?main.pyで定義した関数の位置引数として使用できますか?これは私が試したことです(関連するコードのみ):kivyの別画面で変数を使用する

<LoggedInScreen>: 
    name: 'loggedin' 
    FloatLayout: 
     TextInput: 

      #This is not working 
      text: root.auth(MainScreen.ids.username.text, MainScreen.ids.password.txt) 

      font_name: 'PCBius.ttf' 
      background_color: (73/255,73/255,73/255,1) 
      keyboard_mode: 'managed' 
      readonly: True 
      size: 405, self.height 
      pos: 495,0 
<MainScreen>: 
    name:'main' 
    FloatLayout: 
     TextInput: 
      id: username 
      multiline: False 
      size_hint: self.width/self.width/5, self.height/self.height/16 
      pos: 200,292 
     TextInput: 
      id: password 
      password: True 
      multiline: False 
      size_hint: self.width/self.width/5, self.height/self.height/16 
      pos: 200,232 

しかし、MainScreenが定義されていないというエラーが出力されます。

ありがとうございました!

答えて

0

最も簡単な方法は、これら二つの画面を担当している画面マネージャでauth_successと呼ばれる新しいメソッドを定義することになります。

class MyScreenManager(ScreenManager): 

    ... 

    def auth_success(self, username, password): 
     self.loggedin.username = username 
     self.loggedin.password = password 
     self.current = 'loggedin' 

、ユーザーが正常にメイン画面に認証するときに、self.parent.auth_success(self.ids.username.text, self.ids.username.password)を呼び出します。

+0

私が理解していない限り、私はあなたが私が意味するものを得るとは思わない(おそらくその場合、私はかなり新しい)。 "MainScreen.ids.username.text"を呼び出すと、動作しません。 LoggedInScreenでは、どのようにしてMainScreenのTextInputボックスのテキストを取得できますか? –

+0

@LoganDarby私はあなたが何を意味しているのか理解しています。あなたは画面間でデータを渡したいと思っています。私はそれを簡単な方法で解説しました。すでにスクリーンを管理しているので、スクリーン・マネージャを使用することをお薦めします。 'MainScreen.ids.username.text'は動作しません。オブジェクトではなくクラスにアクセスしているからです。オブジェクトは、子ウィジェットとしてスクリーンマネージャに格納されます。 – jligeza

関連する問題