Я недавно начал изучать kivy, и при попытке обновить ListView я получаю ошибку AttributeError: у объекта ListAdapter нет атрибута «адаптер».Мне было интересно, какова логика этой ошибки и что я могу сделать, чтобы исправить ее.
Вот текст kv
Builder.load_string("""
#:import ListItemButton kivy.uix.listview.ListItemButton
<HomeScreen>:
BoxLayout:
orientation: 'vertical'
padding: 30
spacing: 30
BoxLayout:
Label:
font_size: 48
text: 'Welcome To Your Gym App'
BoxLayout:
Button:
text: 'Diary'
on_release: root.manager.current = 'diary_screen'
<DiaryScreen>:
date_input_field: date_input_field
group_input_field: group_input_field
BoxLayout:
spacing: 30
padding: 30
orientation: 'vertical'
ListView:
adapter: root.DiaryAdapter
BoxLayout:
size_hint_y: .07
Label:
text: 'Date:'
TextInput:
id: date_input_field
multiline: False
BoxLayout:
size_hint_y: .07
Label:
text: 'Group:'
TextInput:
id: group_input_field
multiline: False
BoxLayout:
size_hint_y: .2
orientation: 'horizontal'
Button:
size_hint_y: None
height: '65dp'
text: 'Back'
on_release: root.manager.current = 'home_screen'
Button:
size_hint_y: None
height: '65dp'
text: 'Edit Entry'
Button:
size_hint_y: None
height: '65dp'
text: 'Add Entry'
on_release: root.add_new_entry()
Button:
size_hint_y: None
height: '65dp'
text: 'Delete Entry'
Вот классы для сборки приложения и методыдля получения / обновления адаптера списка вместе со всеми моими импортами.Кроме того, импорт diary_reader - это еще один класс, который генерирует списки и словари из файлов .csv
import kivy
kivy.require('1.10.1')
from kivy.app import App
from kivy.lang import Builder
from kivy.adapters.listadapter import ListAdapter
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.uix.listview import ListItemButton
from diary_reader import *
from kivy.properties import ObjectProperty
diary_dict = give_completed_dict()
displayed_diary = return_as_list_keys(diary_dict)
class HomeScreen(Screen):
pass
class DiaryScreen(Screen):
date_input_field = ObjectProperty()
group_input_field = ObjectProperty()
def __init__(self, **kwargs):
self.DiaryAdapter = ListAdapter(data=displayed_diary,
cls=ListItemButton)
super(DiaryScreen, self).__init__(**kwargs)
def get_date(self):
the_date = self.date_input_field.text
return the_date
def get_group(self):
the_group = self.group_input_field.text
return the_group
def get_key(self):
d = self.get_date()
g = self.get_group()
new_key = d + ' ' + g
return new_key
def add_new_entry(self):
k = self.get_key()
self.DiaryAdapter.adapter.data.extend([k])
self.DiaryAdapter._trigger_reset_populate()
screen_manager = ScreenManager()
screen_manager.add_widget(HomeScreen(name='home_screen'))
screen_manager.add_widget(DiaryScreen(name='diary_screen'))
class My_GymApp(App):
def build(self):
return screen_manager
if __name__ == '__main__':
My_GymApp().run()
Я прочитал документацию по адаптерам и спискам переходов на веб-сайте kivy, но все еще не мог понять, что вызвало эту ошибку..
в add_new_entry self.DiaryAdapter.adapter.data.extend ([k]) AttributeError: у объекта ListAdapter нет атрибута «адаптер»