ошибка импорта метода класса
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.