Как происходит эта ошибка?AttributeError: у объекта «ListAdapter» нет атрибута «адаптер» - PullRequest
0 голосов
/ 21 ноября 2018

Я недавно начал изучать 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 нет атрибута «адаптер»

...