ошибка импорта метода класса

filedialog.py:

import os

from kivy.lang import Builder
from kivymd.app import MDApp
from kivymd.uix.list import OneLineListItem


KV = '''

BoxLayout:
    orientation: 'vertical'
    ScrollView:
        MDList:
            id: container
    BoxLayout:
        MDIconButton:
            icon: 'close'
        MDIconButton:
            icon: 'arrow-left'
        MDIconButton:
            icon: 'eye'
        MDIconButton:
            icon: 'feature-search-outline'
'''


class Test(MDApp):
    def build(self):
        return Builder.load_string(KV)
    def update(self,path='.'):
        print('upd')
        global KV
        
        if os.path.isdir(path):
            self.root.ids.container.clear_widgets()
            for i in os.listdir(path=path):
                self.root.ids.container.add_widget(
                    OneLineListItem(text=i, on_release=lambda item, i=i: self.update(os.path.abspath(i)))
                )
        else:
            #return path
            print(path)
    '''def on_start(self):
        print('strt')
        self.update()'''


Test().run()

dialtest.py:

from kivymd.uix.filedialog import Test
from kivymd.app import MDApp
class X(MDApp):
    def build(self):
        return Test()
    def on_start(self):
        obj=Test()
        obj.update('C:\\')

X().run()

В классе Test есть метод update, который заполняет MDList новыми папками, предварительно удалив старые. Почему при импорте update я получаю это:

...
[CRITICAL] App.root must be an _instance_ of Widget
 Traceback (most recent call last):
   File "c:\Users\user\AppData\Local\Programs\Python\Python39\dialtest.py", line 10, in <module>
     X().run()
   File "C:\Users\user\AppData\Local\Programs\Python\Python39\lib\site-packages\kivy\app.py", line 949, in run
     self._run_prepare()
   File "C:\Users\user\AppData\Local\Programs\Python\Python39\lib\site-packages\kivy\app.py", line 925, in _run_prepare 
     raise Exception('Invalid instance in App.root')        
 Exception: Invalid instance in App.root

?

Если я уберу кавычки с функции on start, то метод нормально заработает в файле filedialog.py, но он отказывается работать в dialtest.py.


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