2016-07-07 9 views
0

コード全体がうまくいきます。しかし、あなたが行くと:テキスト入力を印刷するボタンが機能しない

student > Add New student > > Fill all columns of new student > then submit 

それは動作しないと私は問題を把握することはできません。以下のコードがあります。任意の助けを歓迎されます

from kivy.app import App 
from kivy.lang import Builder 
from kivy.uix.screenmanager import ScreenManager, Screen ,FadeTransition 
from kivy.uix.button import Button 
from kivy.uix.gridlayout import GridLayout 
import csv 
from kivy.uix.textinput import TextInput 

Builder.load_string(""" 
<MenuScreen>: 
    BoxLayout: 
     Button: 
      text: 'Teacher' 
      on_press: root.manager.current = 'screen1' 
     Button: 
      text: 'Student ' 
      on_press:root.manager.current = 'screen2' 
     Button: 
      text: 'Quit' 

<Screen1>: 
    BoxLayout: 

    Button: 
     text: 'Teacher Info' 
     #on_press:root.manager.current = 'login' 
    Button: 
     text: 'Teacher Attandance' 
    Button: 
     text: 'Add New Teacher' 
     on_press:root.manager.current = 'add_teacher' 
    Button: 
     text: 'Back' 
     on_press:root.manager.current ='menu' 


<add_new_teacher>: 
    GridLayout: 
     cols:2 

    Label: 
     text:'Name' 
    TextInput: 
     id: name_input 
     multiline: False 

    Label: 
     text:'Father Name' 
    TextInput: 
     id: name_input 
     multiline: False 

    Label: 
     text: 'Mother Name' 
    TextInput: 
     id: name_input 
     multiline: False 

    Label: 
     text: 'Class' 
    TextInput: 
     id: name_input 
     multine: False 

    Label: 
     text:'Roll no.' 
      text: 'Student Info' 
      on_press:root.csv_std() 
     Button: 
      text: 'Student Attandance' 
      # on_press:root.manager.current ='login' 
     Button: 
      text: 'Add New Student' 
      on_press:root.manager.current = 'add_student' 

     Button 
      text: 'Back' 
      on_press:root.manager.current = 'menu' 

<add_new_student>: 
    GridLayout: 
     cols:2 

     Label: 
      text:'Name' 
     TextInput: 
      id: self.name 
      multiline: False 

     Label: 
      text:'Father Name' 
     TextInput: 
      id: self.fname 
      multiline: False 

     Label: 
      text: 'Mother Name' 
     TextInput: 
      id: self.mname 
      multiline: False 

     Label: 
      text: 'Class' 
     TextInput: 
      id: self.c 
      multine: False 

     Label: 
      text:'Roll no.' 
     TextInput: 
      id: self.r 
      multiline:False 


     Button: 
      text:'Print' 


     Button: 
      text:'Submit' 
      on_press:root.print_text() 

     Button: 
      text:'Back' 
      on_press:root.manager.current= 'screen2' 

""") 

# Declare both screens 
class MenuScreen(Screen): 
    pass 
class add_new_teacher(Screen): 

    pass 
class Screen1(Screen): 
    pass 
class Screen2(Screen): 
    def csv_std(self): 
     f = open("a.csv", 'r') 
     reader = csv.reader(f) 
     for row in reader: 
      print(" ".join(row)) 
    pass 
class add_new_student(Screen): 
    def print_text(self): 
     for child in reversed(self.children): 
      if isinstance(child, TextInput): 
       print child.text 
    pass 


# Create the screen manager 
sm = ScreenManager() 
sm.add_widget(MenuScreen(name='menu')) 
sm.add_widget(add_new_teacher(name='add_teacher')) 
sm.add_widget(add_new_student(name='add_student')) 
sm.add_widget(Screen1(name='screen1')) 
sm.add_widget(Screen2(name='screen2')) 

class TestApp(App): 

    def build(self): 
     return sm 

if __name__ == '__main__': 
    TestApp().run() 

答えて

2

あなたはコードフォーマットがひどいですが、少なくともあなたはバッククッキーを使用していませんでした。将来的には、&をコピーしてここに表示したい例全体を貼り付け、その例(全体)を選択してCtrl + Kを押すと、すべての選択された行がインデントされ、okに見えるようになります。

root.print_text()add_new_studentクラスをターゲットにし、アクセスするコードはchildren - GridLayoutであるため、コードは正常に動作するはずです。

forの行を次のように編集してください。for child in reversed(self.children[0].children):あなたはいいです。 :)

以上の効率的なソリューションScreenあなたはScreenと、いくつかのレイアウトから両方inherittingを得ることができた、あまりにもレイアウトとして振る舞うが、レイアウトは最初であることを確認することを取得するには、次のようになります。

class add_new_student(GridLayout, Screen): 
    def print_text(self): 
     for child in reversed(self.children): 
      if isinstance(child, TextInput): 
       print child.text 

KV:

<add_new_student>: 
    cols:2 

    Label: 
     text:'Name' 
+1

私はこれとそれが働いたおかげでの世話をします:) –

+0

@SheenaWadhwaのでthhe答えが受け入れられるか、またはされていません? – EL3PHANTEN

+0

私は前にそれを受け入れましたが、インターネットの問題のために選択されていませんでした....助けてくれてありがとう –

関連する問題