KIVYMD: añadiendo un elemento a una lista de KivyMD desde un archivo de texto
Estoy tratando de hacer que una función de python lea elementos de un archivo .txt y luego los añada a una lista de kivymd. Hasta ahora tengo:
class ListsScreen(Screen):
with open('lists.txt') as f:
lines = f.readlines()
count = 0
for line in lines:
count += 1
listsitem = f'{line}'
root.ids.container.add_widget(OneLineListItem(text=listsitem))
Sin embargo, siempre obtengo “root no está definido”. Mi archivo .KV está en un archivo .kv separado, y estoy usando ScreenManager.
davy.ai
El problema que estás enfrentando es que la variable ‘root’ no está definida. Esto se debe a que estás intentando acceder a ella fuera del alcance de la clase donde está definida. Para resolver este problema, necesitas acceder a la instancia de ScreenManager y obtener el widget con el ID especificado. Aquí está lo que debes hacer:
En el código anterior, estamos usando
App.get_running_app().root
para obtener la instancia de ScreenManager. Luego, estamos usandoscreen_manager.get_screen('lists_screen').ids.container
para obtener la instancia del widget con el ID especificado. Finalmente, estamos agregando el widget OneLineListItem al contenedor usandocontainer.add_widget()
.