如何在 JsonStore kivy 应用程序中循环获取值?
How to loop for values in JsonStore kivy application?
我一直在努力寻找一种方法来使用 JsonStore 模块循环访问多个对象中的一组特定值。我的代码:
class MainApp(App):
def build(self): # build() returns an instance
self.store = JsonStore("streak.json") # file that stores the streaks:
return presentation
def check_streak(self, instance):
for value in self.store.find('delta'):
if value > time.time():
print("early")
if value == time.time():
print("on time")
if value < time.time():
print("late")
此函数连接到页面上显示的不同按钮:
def display_btn(self):
# display the names of the streaks in a list on PageTwo
for key in self.store:
streak_button = Button(text=key, on_press=self.check_streak)
self.root.screen_two.ids.streak_zone.add_widget(streak_button)
当我使用 check_streak 我得到 TypeError: find() takes 1 positional argument but 2 were given
json 文件中的内容:
{"first": {"action": "first", "action_num": "1", "seconds": 60, "score": 0, "delta": 1555714261.0438898}, "second": {"action": "second", "action_num": "2", "seconds": 120, "score": 0, "delta": 1555879741.894656}}
请注意,每个对象都以其名称开头,在本例中为 "first" 和 "second"。我希望能够遍历每个对象 "delta" 键并获取其值。一旦获得该对象的值 'delta',我就会将其与当前时间进行比较。
有人向我提到了一个涉及生成 ID 的问题,但我看不出这与我的问题有什么关系。虽然我认为生成器很适合创建随机数,但我正在处理的数据并不是随机的。如果使用生成器是完成我想做的事情的唯一方法,有人可以向我解释如何在我的代码中使用它吗?
我之前收到的答案并没有说明我希望 "delta" 值仍然附加到对象而不是仅仅列出它们这一事实。
如何使用recursive iteration through nested json for specific key in python
下面的例子没有使用JsonStore
。它正在使用 json.load
加载 JSON 个对象。
片段
import json
...
def check_streak(self, *args):
with open("streak.json", "r") as read_file:
data = json.load(read_file)
for honey in item_generator(data, 'delta'):
print(f"honey={honey}")
print(f"type(honey)={type(honey)}")
if honey > time.time():
print("early") # test
if honey == time.time():
print("on time")
if honey < time.time():
print("late")
备注
无法使用store.find(key='value')
函数,因为delta
不固定或不变。它不像 name='kivy'
.
我一直在努力寻找一种方法来使用 JsonStore 模块循环访问多个对象中的一组特定值。我的代码:
class MainApp(App):
def build(self): # build() returns an instance
self.store = JsonStore("streak.json") # file that stores the streaks:
return presentation
def check_streak(self, instance):
for value in self.store.find('delta'):
if value > time.time():
print("early")
if value == time.time():
print("on time")
if value < time.time():
print("late")
此函数连接到页面上显示的不同按钮:
def display_btn(self):
# display the names of the streaks in a list on PageTwo
for key in self.store:
streak_button = Button(text=key, on_press=self.check_streak)
self.root.screen_two.ids.streak_zone.add_widget(streak_button)
当我使用 check_streak 我得到 TypeError: find() takes 1 positional argument but 2 were given
json 文件中的内容:
{"first": {"action": "first", "action_num": "1", "seconds": 60, "score": 0, "delta": 1555714261.0438898}, "second": {"action": "second", "action_num": "2", "seconds": 120, "score": 0, "delta": 1555879741.894656}}
请注意,每个对象都以其名称开头,在本例中为 "first" 和 "second"。我希望能够遍历每个对象 "delta" 键并获取其值。一旦获得该对象的值 'delta',我就会将其与当前时间进行比较。
有人向我提到了一个涉及生成 ID 的问题,但我看不出这与我的问题有什么关系。虽然我认为生成器很适合创建随机数,但我正在处理的数据并不是随机的。如果使用生成器是完成我想做的事情的唯一方法,有人可以向我解释如何在我的代码中使用它吗?
我之前收到的答案并没有说明我希望 "delta" 值仍然附加到对象而不是仅仅列出它们这一事实。
如何使用recursive iteration through nested json for specific key in python
下面的例子没有使用JsonStore
。它正在使用 json.load
加载 JSON 个对象。
片段
import json
...
def check_streak(self, *args):
with open("streak.json", "r") as read_file:
data = json.load(read_file)
for honey in item_generator(data, 'delta'):
print(f"honey={honey}")
print(f"type(honey)={type(honey)}")
if honey > time.time():
print("early") # test
if honey == time.time():
print("on time")
if honey < time.time():
print("late")
备注
无法使用store.find(key='value')
函数,因为delta
不固定或不变。它不像 name='kivy'
.