from kivy.app import App
from kivy.uix.textinput import TextInput
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.scrollview import ScrollView
from kivy.uix.gridlayout import GridLayout



class Col(ScrollView):                    # defines a row
    def __init__(self, col_no=1, **k):
        super().__init__(**k)
        self.size_hint=(1,1)
        self.grid=GridLayout(size_hint_y=None,size_hint_x=1,cols=1,row_default_height=50)
        self.grid.bind(minimum_height=self.grid.setter('height'))



        #self.orientation="vertical"

        for i in range(col_no):
            a = TextInput(multiline=0, write_tab=0,on_text_validate=self.on_enter)  # set write_tab False to tab between textinput fields
            self.grid.add_widget(a)
            b=a
        self.add_widget(self.grid)
    def on_enter(self,instance):
        print(instance)
        a=instance.get_focus_next()
        a.focus=1
        print(a)
        


class A(App):
    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        self.ss = None

    def build(self):
        self.ss = BoxLayout(orientation="horizontal",spacing=3)
        for i in range(10):
            col= Col(col_no=10)
            print(col)
            self.ss.add_widget(col)
        #self.start()
        return self.ss
    def on_start(self):
        #print(f'The rows are in reverse order: {self.ss.children.children[0].children}')
        #print(f'Each row has text inputs, also in reverse order: {self.ss.children[0].children}')
        #print(list(rows))
        cols = reversed(self.ss.children)
        #print(list(cols))
        #print(list(cols))
        x=cols
        
        #print(x)
        for j in x:
            print(j.children[0].children)

        for r,col in enumerate(x):
            print("hello")
            t_inputs = reversed(col.children[0].children)
            print(t_inputs)
            for c, t_input in enumerate(t_inputs):
                t_input.text = f'R{c}, C{r}'

A().run() 
