【问题标题】:RecycleView and ScreenManager problemsRecycleView 和 ScreenManager 问题
【发布时间】:2019-03-22 03:51:40
【问题描述】:

似乎无法解决在使用 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

【问题讨论】:

  • 当您执行return Screen 时,它会从您的名为Screen 的kv 文件中返回您的小部件。当您要在多个屏幕之间切换时使用 ScreenManager。由于您没有在任何地方定义名为ScreenManager 的类,我猜您的应用程序只是一个空白屏幕。 youtube 上有一些关于如何在 kivy 中使用屏幕/屏幕管理器的好视频(包括我!)。

标签: python-3.x kivy


【解决方案1】:

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

  • 实例化类规则后添加id: screen_rv&lt;Screen&gt;ScreenManager
  • app.root.get_data(*args) 替换为app.root.ids.screen_rv.get_data(*args)

kv - 片段

<ScreenManagement>:
    ScreenRV:
        id: screen_rv

<Button>:
    on_press: app.root.ids.screen_rv.get_data(*args)

<ScreenRV>:
    name: 'screen_rv'

【讨论】:

  • 不客气。感谢您的积极反馈。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-20
  • 1970-01-01
相关资源
最近更新 更多