RecycleView和ScreenManager问题

时间:2019-03-22 03:51:40

标签: python-3.x kivy

使用Recycleview时似乎无法解决从数据库中获取数据以填充到各种文本输入中的问题。该问题仅在我使用ScreenManager / Screen时存在。当我直接从def build(self): return Screen调用屏幕时,一切正常,但是当我像这样def build(self): return ScreenManager

调用屏幕管理器时,则无法正常工作
  

kv文件

<Button>:
    on_press: app.root.get_data(*args)
<Screen>:
    BoxLayout:
        orientation: 'vertical'
        size_hint_x: .3
        RV:
            viewclass: 'Button'
            data: [{'text': str(x)} for x in root.my_data]
            RecycleBoxLayout:
                orientation: 'vertical'
                default_size: None, dp(32)
                default_size_hint: 1, None
                size_hint_y: None
                height: self.minimum_height

1 个答案:

答案 0 :(得分:1)

方法get_data()和变量my_data在Screen类中实现。如果没有ScreenManager,则根目录为Screen。添加ScreenManager之后,现在的根目录为ScreenManager。为了从类规则Button中访问方法get_data(),您需要执行以下操作:

  • 实例化类规则后,在id: screen_rv下添加<Screen>
  • ScreenManager替换为app.root.get_data(*args)

kv-代码段

app.root.ids.screen_rv.get_data(*args)