Я не могу разместить AccordionItem на экране Kivy ScreenManager. Для этого я должен определить что-то вроде root = Accordion (). Но я не знаю, где определяется ScreenLayout. Я собрал его на чистом Python, потому что я новичок в Kivy, но не новичок в Python.
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.button import Button
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.uix.label import Label
from kivy.uix.accordion import Accordion, AccordionItem
class ScreenOne(Screen):
def __init__(self, **kwargs):
super().__init__(**kwargs)
btn1 = Button(
text='change screen',
size_hint=(.5, .05),
pos_hint={'left':0, 'top':1}
)
btn1.bind(on_press=self.changer)
self.add_widget(btn1)
def changer(self,*args):
self.manager.current = 'screen2'
def test(self,instance):
print('This is a test')
class ScreenTwo(Screen):
def __init__(self, **kwargs):
super().__init__(**kwargs)
btn2 = Button(
text='change screen',
size_hint=(.5, .25),
pos_hint={'left':0, 'top':1}
)
btn2.bind(on_press=self.changer)
self.add_widget(btn2)
title = ["Title 1", "Title 2","Title 3","Title 4","Title 5"]
for x in range(5):
item = AccordionItem(title= title[x])
item.add_widget(Label(text='Very big content\n' * 10))
self.add_widget(item)
return sm
def changer(self,*args):
self.manager.current = 'screen1'
def test(self,instance):
print('This is another test')
class TestApp(App):
def build(self):
sm = ScreenManager()
sc1 = ScreenOne(name='screen1')
sc2 = ScreenTwo(name='screen2')
sm.add_widget(sc1)
sm.add_widget(sc2)
print (sm.screen_names)
return sm
if __name__ == '__main__':
TestApp().run()
ScreenTwo должен показать 5 AccordionItems. Но они перекрываются и не работают должным образом.