我正在尝试在 recycleview 中显示 json 文件中的项目列表,但应用程序返回一个空白屏幕。当我从“MDApp”更改为普通的 kivy“App”时,列表会正确显示。我想将此代码包含在 MDApp 中,因为我正在使用多个 kivymd 小部件。知道为什么会这样吗?
这是我的简化代码:
示例.py
from kivy.app import App # it works with this
from kivymd.app import MDApp #blank screen with this
from kivy.lang import Builder
import json
from kivy.uix.recycleview import RecycleView
def load_pricewatch_data():
with open ('data/HS_data.json') as pwdata:
pricewatch_data =json.load(pwdata)
return pricewatch_data
data_items = load_pricewatch_data()
class RV(RecycleView):
def __init__(self, **kwargs):
super(RV, self).__init__(**kwargs)
self.data = [
{'text': str(value),
'id': id}
for id,value in data_items["Product name"].items()]
class SampleApp(MDApp): #works with App, but displays blank like this
def build(self):
Builder.load_file('sample.kv')
return RV()
if __name__ == '__main__':
SampleApp().run()
样本.kv
<RV>:
viewclass: 'Label'
RecycleBoxLayout:
default_height: 3
default_size_hint: 1, None
size_hint_y: None
height: self.minimum_height
orientation: 'vertical'
我的 json 文件是从数据框派生的,它具有以下格式:HS_data.json
{"Product name":
{"0":"product1", "1":"product2", "2":"procuct3"},
"Price":{"0":"price1","1":"price2","2":"price3"}
}