Python 3.x RecycleView和ScreenManager问题
在使用Recycleview时,似乎无法解决从数据库获取数据以填充到各种文本输入的问题。这个问题只有在我使用ScreenManager/Screen时才存在。当我直接从Python 3.x RecycleView和ScreenManager问题,python-3.x,kivy,Python 3.x,Kivy,在使用Recycleview时,似乎无法解决从数据库获取数据以填充到各种文本输入的问题。这个问题只有在我使用ScreenManager/Screen时才存在。当我直接从def build(self):return屏幕调用屏幕时,一切正常,但当我像这样调用屏幕管理器def build(self):return屏幕管理器时,一切正常 kv文件 : 按:app.root.get_data(*args) : 盒子布局: 方向:“垂直” 大小\u提示\u x:.3 房车: viewclass:“按钮” 数
def build(self):return屏幕调用屏幕时,一切正常,但当我像这样调用屏幕管理器def build(self):return屏幕管理器时,一切正常
kv文件
:
按:app.root.get_data(*args)
:
盒子布局:
方向:“垂直”
大小\u提示\u x:.3
房车:
viewclass:“按钮”
数据:[{'text':str(x)}在root.my_数据中表示x]
循环利用布局:
方向:“垂直”
默认大小:无,dp(32)
默认大小提示:1,无
尺寸提示:无
高度:自身最小高度
方法获取数据()
和变量、我的数据在类屏幕中实现。如果没有ScreenManager,根目录就是Screen。添加ScreenManager后,现在根目录是ScreenManager。要从类规则按钮访问方法get_data()
,您需要执行以下操作:
- 在实例化类规则后,在
ScreenManager
下添加id:screen\u rv
- 将
app.root.get_数据(*args)
替换为app.root.ids.screen\u rv.get_数据(*args)
kv-片段
:
ScreenRV:
id:屏幕
:
按下:app.root.ids.screen\u rv.get\u data(*args)
:
名称:'screen_rv'
当您执行返回屏幕
操作时,它会从名为屏幕
的kv文件中返回小部件。当您有多个屏幕要切换时,将使用ScreenManager。由于您没有在任何地方定义名为ScreenManager
的类,我猜您的应用程序只是一个空白屏幕。youtube上有一些关于如何在kivy中与屏幕/屏幕经理合作的好视频(包括我的!)。非常欢迎您。谢谢你的积极反馈。
<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
<ScreenManagement>:
ScreenRV:
id: screen_rv
<Button>:
on_press: app.root.ids.screen_rv.get_data(*args)
<ScreenRV>:
name: 'screen_rv'