До создания приложения с несколькими экранами проблем не было, но теперь, когда я сделал его одним, я получаю сообщение об ошибке:
if self.light_novel_list.adapter.selection:
AttributeError: 'NoneType' object has no attribute 'adapter'
Всякий раз, когда я нажимаю кнопку удаления при выборе элемента в моем спискеobject.
Когда я получаю ошибку NoneType, я думаю, что я как-то неправильно ссылаюсь на объект в иерархии kivy, но не знаю, как.
Мой соответствующий код:
lightnovel.py:
import kivy
from urllib.request import Request, urlopen
from kivy.uix.screenmanager import ScreenManager, Screen
from bs4 import BeautifulSoup
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.properties import ObjectProperty
from kivy.uix.listview import ListItemButton
from kivy.properties import StringProperty
class SavedListButton(ListItemButton):
pass
class LightNovel(Screen):
light_novel_text_input = ObjectProperty()
light_novel_list = ObjectProperty()
def delete(self):
if self.light_novel_list.adapter.selection:
selection = self.light_novel_list.adapter.selection[0].text
self.light_novel_list.adapter.data.remove(selection)
self.light_novel_list._trigger_reset_populate()
class Series(Screen):
pass
class LightNovelApp(App):
def build(self):
screen_manager = ScreenManager()
screen_manager.add_widget(LightNovel(name="screen_one"))
screen_manager.add_widget(Series(name="screen_two"))
return screen_manager
lnApp = LightNovelApp()
lnApp.run()
lightnovel.kv:
#: import main lightnovel
#: import ListAdapter kivy.adapters.listadapter.ListAdapter
#: import ListItemButton kivy.uix.listview.ListItemButton
<LightNovel>:
BoxLayout:
light_novel_text_input: searchbar
light_novel_list: saved
orientation: "vertical"
id: main
BoxLayout:
id: secondbar
size_hint: 1, .1
Button:
id: delete
size_hint: .5, 1
text: "Delete"
on_press: root.delete()
Button:
id: goto
size_hint: .5, 1
text: "Go to"
on_press:
root.goto()
root.manager.transition.direction = 'left'
root.manager.transition.duration = 1
root.manager.current = 'screen_two'
ListView:
id: saved
adapter:
ListAdapter(data=["test"], cls=main.SavedListButton)
Я вырезал ненужный код, чтобы его было легче читать, но все мои self.
-ссылки в других моих функциях также терпят неудачу, поэтому я считаю, что ссылаюсь на них неправильно.