Kivy de list box nasıl kullanırım

Merhaba… tkinterde yaptığım bir küçük uygiulamayı mobile aktarmanın kivy ile olursa daha kolay olabileceği söylenmişti. Kivy de takıldığım konu bir veri tabanından aldığım bilgiyi text olarak nasıl yazdıracağım. Bulamayınca text bilgiyi label tanımlayıp içüne yaxdırıp listbox gibi kullandım.
Kod şöyle

from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.label import Label
from kivy.graphics import Color, Rectangle
from kivy.uix.floatlayout import FloatLayout
import sqlite3,os

class Progress(App):

def build(self):   
    duzen = FloatLayout(size=(300,600))
    
    baslik = Label(text='Sınav Sonuç Takibi', color="red",font_size=100, size_hint=(.3, .2), pos=(400,1900))

    self.mat = Button(text='Matematik',
    color="white",background_color=(1,0,2,3), size_hint=(.23, .05),pos=(1,1900))
    
    #self.mat.bind(on_press = self.KonuMat)
    #self.mat.bind(on_release = self.KonuMat) 
                         
    self.fen = Button(text='Fen Bilgisi',
    color="white",background_color=(1,0,2,3),size_hint=(.24, .05),pos=(265,1900))
    
    #self.fen.bind(on_press = self.KonuFen)
    
    self.tur = Button(text='Türkçe',
    color="white",background_color=(1,0,2,3),size_hint=(.17, .05),pos=(540,1900))
    
    #self.tur.bind(on_press = self.KonuTur)
    
    self.sos = Button(text='Sosyal Bilgiler',color="white",background_color=(1,0,2,3),size_hint=(.33, .05),pos=(740,1900))
    
    #self.sos.bind(on_press = self.KonuSos)
    
    konu = Label(text='Konular :',
    color="cyan" ,pos=(1,1600),bold=True,size_hint=(.25,.2),font_size=70)
    
    self.Konu_Detay = Label(text=' ',
    color="lightyellow",size_hint=(1,1),pos=(-160,270),bold=True,font_size=50 )           
     
    tarih = Label(text='         Tarih     ',
    color="yellow",size_hint=(.15, .2),pos=(1,600),bold=True,underline=True,font_size=60 )
    
    soru = Label(text='| Soru Adet    ',
    color="orange",size_hint=(.25, .2),pos=(310,600),bold=True, underline=True, font_size=60 )
    
    dogru = Label(text='|Doğru  ',
    color="lightgreen",size_hint=(.2, .2),pos=(570,600),bold=True, underline=True, font_size=60 )
    
    yanlis = Label(text='|Yanlış ',
    color="red",size_hint=(.2, .2),pos=(750,600),bold=True, underline=True, font_size=60 )
    
    bos = Label(text='|Boş',
    color="cyan",size_hint=(.15, .2),pos=(930,600),bold=True, underline=True, font_size=60 )
    
    self.Notu_Detay = Label(text='',
    color="lightyellow",size_hint=(1,1),pos=(-10,-720),bold=True,underline=False,font_size=50)
    
    
    duzen.add_widget(baslik)
    duzen.add_widget(self.mat)
    duzen.add_widget(self.fen)
    duzen.add_widget(self.tur)
    duzen.add_widget(self.sos)
    duzen.add_widget(konu)
    duzen.add_widget(self.Konu_Detay)
    duzen.add_widget(tarih)
    duzen.add_widget(soru)
    duzen.add_widget(dogru)
    duzen.add_widget(yanlis)
    duzen.add_widget(bos)
    duzen.add_widget(self.Notu_Detay)
        
    return duzen

Progress().run()

Kodunuzu ctrl + E içinde atar mısınız ?

abi kivy lang kullanmadığın için kod hiç okunaklı değil. bu şekilde de olur ama şuan işsiz gibi 1 saat bunu çözmeye vakit ayırmak lazım. gerçekten yardım almak istiyosan kodu bu kadar karışık atma. mesela database den okuma işlemi yapıyoruz diyelim. yazma işlemi olan kısımları silip öyle at. veya 50 tane button varsa onları sil. sadece sorunun olduğu kısımı atarsan daha okunaklı oluyo. geçenki konuda link atmıştım kivy database kullanımı ve kivy lang kullanımı ile ilgili. bu şekilde yazarsan daha sağlıklı olur abi kolay gelsin.

from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.label import Label
from kivy.graphics import Color, Rectangle
from kivy.uix.floatlayout import FloatLayout
import sqlite3,os

class Progress(App):

def build(self):   
    duzen = FloatLayout(size=(300,600))
    
    baslik = Label(text='Sınav Sonuç Takibi', color="red",font_size=100, size_hint=(.3, .2), pos=(400,1900))

    self.mat = Button(text='Matematik',
    color="white",background_color=(1,0,2,3), size_hint=(.23, .05),pos=(1,1900))
    
    #self.mat.bind(on_press = self.KonuMat)
    #self.mat.bind(on_release = self.KonuMat) 
                         
    self.fen = Button(text='Fen Bilgisi',
    color="white",background_color=(1,0,2,3),size_hint=(.24, .05),pos=(265,1900))
    
    #self.fen.bind(on_press = self.KonuFen)
    
    self.tur = Button(text='Türkçe',
    color="white",background_color=(1,0,2,3),size_hint=(.17, .05),pos=(540,1900))
    
    #self.tur.bind(on_press = self.KonuTur)
    
    self.sos = Button(text='Sosyal Bilgiler',color="white",background_color=(1,0,2,3),size_hint=(.33, .05),pos=(740,1900))
    
    #self.sos.bind(on_press = self.KonuSos)
    
    konu = Label(text='Konular :',
    color="cyan" ,pos=(1,1600),bold=True,size_hint=(.25,.2),font_size=70)
    
    self.Konu_Detay = Label(text=' ',
    color="lightyellow",size_hint=(1,1),pos=(-160,270),bold=True,font_size=50 )           
     
    tarih = Label(text='         Tarih     ',
    color="yellow",size_hint=(.15, .2),pos=(1,600),bold=True,underline=True,font_size=60 )
    
    soru = Label(text='| Soru Adet    ',
    color="orange",size_hint=(.25, .2),pos=(310,600),bold=True, underline=True, font_size=60 )
    
    dogru = Label(text='|Doğru  ',
    color="lightgreen",size_hint=(.2, .2),pos=(570,600),bold=True, underline=True, font_size=60 )
    
    yanlis = Label(text='|Yanlış ',
    color="red",size_hint=(.2, .2),pos=(750,600),bold=True, underline=True, font_size=60 )
    
    bos = Label(text='|Boş',
    color="cyan",size_hint=(.15, .2),pos=(930,600),bold=True, underline=True, font_size=60 )
    
    self.Notu_Detay = Label(text='',
    color="lightyellow",size_hint=(1,1),pos=(-10,-720),bold=True,underline=False,font_size=50)
    
    
    duzen.add_widget(baslik)
    duzen.add_widget(self.mat)
    duzen.add_widget(self.fen)
    duzen.add_widget(self.tur)
    duzen.add_widget(self.sos)
    duzen.add_widget(konu)
    duzen.add_widget(self.Konu_Detay)
    duzen.add_widget(tarih)
    duzen.add_widget(soru)
    duzen.add_widget(dogru)
    duzen.add_widget(yanlis)
    duzen.add_widget(bos)
    duzen.add_widget(self.Notu_Detay)
        
    return duzen

Progress().run()

. (20 karakterrrrrrrr)

abi bayadır kivy yazmıyorum yavaş yavaş zihnimden yok oluyo o yüzden kod karşılığını yazamicam sadece mantığını yazayım. database de 100 tane veri var diyelim. bunları çektin bi şekilde. yapman gereken, çektiğin veriyi alıcaksın for ile çektiğin verinin uzunluğu kadar label veya button işte ne istiyosan widget oluşturacaksın.
kivy de boxlayout var onu kullanabilirsin veya gridlayout var onu da kullanabilirsin. google a kivy layouts yazdığında çıkacaktır.
https://kivy.org/doc/stable/api-kivy.uix.boxlayout.html

list = [1,2,3,4,.....100]

for i in list:
   add_widget(label) 

gibi

for kullanmamızın amacı gerçekten 100 tane veri çekiyo olabilirsin ve alt alta yazdırman gerekebilir. abartıp belki binlerce veri çektiğin durum olabilir. amele gibi alt alta label yazılmaz ondan dolayı for ile çektiğimiz verinin uzunluğu kadar widget oluşturuyoruz.

kivy yazarken python gibi yazılmaz okunaksız oluyo. burada adamlar kivy lang in ne olduğunu ve ne işe yaradığını anlatmışlar.
https://kivy.org/doc/stable/api-kivy.lang.html

ayrıyetten bende Python programını apk yapmak - BandoLero tarafından #13 kivy lang kullanarak farklı farklı class(dosya)lardan işlem yapmayı göstermiştim. sayfa geçişleri içinde ScreenManager widgetını kullandım. yani uygulama 1 sayfa içinde de yapılırda ben tercih etmiyorum. farklı farklı sayfalar olsun. bi sayfa giriş sayfası, 2. sayfa ayarlar olabilir yazı fontu rengi vs gibi.