Python + Kivy(KivyMD) запуск функции из класса при старте не работает

Я пытаюсь присвоить текст лейблу у которого id:news_main
Через кнопку РАБОТАЕТ! А в Автомате при запуске, нет( Дело еще в том, что более адекватного виджета для "раздвижения" текста я не нашел, MDExpansionPanel активируется при старте через MDBoxLayout "id: Box"

Я пробовал разные методы, но в некоторых немного не догоняю. Попытался News().test() работает, но Лейблу текст не присваивает почему-то((

Я хочу, чтоб при старте, текст взяло из файла, обработало, создало MDExpansionPanel. и когда приложение уже запущенно к news_main.text уже должен быть присвоен текст из файла.

from kivymd.app import MDApp
from kivymd.uix.expansionpanel import MDExpansionPanel, MDExpansionPanelThreeLine
from kivymd.uix.gridlayout import MDGridLayout



news_Main_str = []



class News(MDGridLayout):

    def test(self):
        with open('news/3News_Main.txt', 'r') as news_Main:
            read_News_Main = news_Main.readlines()

            for i in range(len(read_News_Main)):
                news_Main_str.append(read_News_Main[i])

        ready_Main_str = ' '.join(news_Main_str)

        print(ready_Main_str)

        self.ids.news_main.text = ready_Main_str
        print('hello')

class Test2(MDApp):

    def build(self):
        return

    def on_start(self):
        self.root.ids.box.add_widget(
            MDExpansionPanel(
                icon="news/Logo.png",
                content=News(),
                panel_cls=MDExpansionPanelThreeLine(
                    text="Development",
                    secondary_text="43166",
                    tertiary_text="пн, 14 февраля",
                )
            )
        )

        News().test() # Думал так сработает, но нет!

Test2().run()

test2.kv

<News>
    cols: 1
    padding: 5, 0, 5, 0
    md_bg_color: 0.235, 0.247, 0.254, 1
    size_hint_y: None
    height: "250dp"

    ScrollView:
        MDBoxLayout:
            cols: 1
            spacing: dp(55)
            orientation: 'vertical'
            adaptive_height: True

            MDBoxLayout:
                cols: 1
                size_hint: 1, None
                orientation: 'vertical'

                MDLabel: # 103
                    id: news_main
                    adaptive_height: True
                    text: "Мне нужно поменять этот текст НЕ НА КНОПКУ, А в АВТОМАТЕ (При старте)"
                    theme_text_color: "Custom"
                    text_color: 0.811, 0.823, 0.827, 1

            MDBoxLayout: # Кнопка для теста
                cols: 1
                size_hint: 1, None
                orientation: 'vertical'

                Button:
                    on_press: root.test()

MDScreen:
    md_bg_color: 0.964, 0.164, 0.164, 1
    ScreenManager:
        id: screen_manager

        MDScreen:
            name: "scr1"
            #--------------------<News>--------------------
            MDGridLayout:                         # Раздвижной Блок новостей
                id: box
                cols: 1
                adaptive_height: True
                md_bg_color: 0.235, 0.247, 0.254, 1
            #--------------------<News>--------------------



Пример текста 3News_Main.txt

Дорога к другу. Воспоминание юности
Вадим Бакулин
Холодный двадцать пятый отпыхтел.
Я вышел на последней остановке.
Как благородно вечер поседел!
Светло и тихо на твоей "Рублёвке".
Пока до дома твоего дойдёшь,
Мороз январский о себе заявит,
Пощиплет нос и щёки, ну так что-ж,
Крещенье этой ночью наступает!

Сугробов горы создают уют,
А звёзды смотрят пристально и строго.
Я повернул на линию твою, -
Меня узнала белая дорога!
Пусть ветер надрывается опять, -
Всё серебрится, всё вокруг сверкает!
Знакомый силуэт вдали мелькает:
Мой лучший друг идёт меня встречать!

(Кодировка может подвести.)


Ответы (2 шт):

Автор решения: Max

Не совсем понятно что нужно сделать, но попробуйте в методе build вызвать ту функцыю которая работает по кнопке, тогда при старте должно сработать автоматически:

def build(self):
    News().test()
    return

И обратите внимание, вы запускаете класс Test2, а файл кв начинается с <News>

→ Ссылка
Автор решения: Max
class News(MDGridLayout): 
    text = StringProperty(self.test)
    def test(self):
        with open('news/3News_Main.txt', 'r') as news_Main:
        read_News_Main = news_Main.readlines()
        return ' '.join(news_Main_str)

В КВ файле пропишите свойство для вашего лейбла text: root.text. Должно сработать автоматически

→ Ссылка