как при запуске обновить Gui при наличии конфигарационного файла config.ini(если он присутсвует...)

from configparser import ConfigParser config = ConfigParser()

config.read('config.ini') print(config.get('main', 'server_inside')) print(config.get('main', 'server_outside')) from kivy.app import App from kivy.lang import Builder from kivy.uix.screenmanager import ScreenManager, Screen from configparser import ConfigParser import os

config = ConfigParser()

Builder.load_string(""" <MenuScreen>:
    canvas.before:
        Color:
            rgba: 255, 255, 255, 0.5
        Rectangle:
            pos: self.pos
            size: self.size


    Button:
        text: 'обновити'
        pos_hint: {"center_y": 0.91, "center_x": 0.75}  
        size_hint: 0.5, 0.06                           
        on_press: root.get_option_for_button()



    Button:
        id: btn1
        text: "1"
        on_release: app.get_option_for_button1()
        pos_hint: {"center_y": 0.15, "center_x": 0.25}
        size_hint: 0.5, 0.06





""")


# Declare both screens class MenuScreen(Screen):

    pass


class SettingsScreen(Screen):

    pass


sm = ScreenManager() sm.add_widget(MenuScreen(name='menu')) sm.add_widget(SettingsScreen(name='settings'))


class TestApp(App):
    config.read("config.ini")

    def build(self):
        return sm



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

в конфиге кнопка 1 уже называется по другому, хочу прочитать её из файла но не знаю как это сделать...( подскажите пжслта


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

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

Надеюсь в основном файле ваш код выглядит правильно. Но изменить текст кнопки можно так:

from kivy.clock import Clock
...
    def build(self):
        self.sm = ScreenManager()
        self.menuscreen = MenuScreen(name='menu')
        self.settingsscreen = SettingsScreen(name='settings')
        self.sm.add_widget(self.menuscreen)
        self.sm.add_widget(self.settingsscreen)
        # добавляем крошечную задержку, чтобы успели подгрузиться все данные, иначе может быть ошибка
        Clock.schedule_once(self.changename)
        return self.sm

    def changename(self, *args):
        # проверяем есть ли файл
        if os.path.isfile('config.ini'):
            config.read('config.ini')
            # не знаю в каком поле содержится имя для кнопки
            # пусть для примера будет 'buttonname'
            self.menuscreen.ids.btn1.text = config.get('buttonname')
→ Ссылка