I've been struggling to find a way to iterate through a certain set of values in multiple objects using the JsonStore module. My code:
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")
This function is connected to different buttons that are displayed on the page:
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)
When I use the check_streak I get TypeError: find() takes 1 positional argument but 2 were given
What's inside the json file:
{"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}}
Notice that every object starts with its name, in this case, "first" and "second". I want to be able to iterate through every objects "delta" key and get its value. Once I get the value of that objects 'delta' I will then compare it to the current time.
I have been referred to a question that involves generating ids but I don't see how that is related to my problem. Although I think a generator is good for creating random numbers, The data I'm working with isn't random. If using a generator is the only way to do what I'm trying to do could someone please explain to me how I could use it in my code?
The answers I have previously received don't account for the fact that I want the "delta" values to still be attached to the object rather than just listing them.
The following example does not use JsonStore
. It is using json.load
to load JSON objects.
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")
The store.find(key='value')
function cannot be used because delta
is not fixed or constant. It is not like name='kivy'
.