【发布时间】:2017-07-25 13:44:09
【问题描述】:
我正在用 kivy 构建一个智能闹钟。为了使其模块化,我使用 python 代码(使用布局小部件作为基类)构建每个主要小部件(当前时间、当前天气、警报等),然后使用 kv 语言文件将这些小部件定位在屏幕上.
其中一些小部件需要天气数据,我编写了一个可以使用 wunderground api 获取这些数据的类。我遇到的问题是api请求是有限的,我不想让每个小部件重复轮询相同的数据。
我的解决方案是构建一个单独的类来轮询计时器上的数据(使用 kivy Clock 类),然后调度一个“新天气数据可用”的事件。小部件从事件中读取数据(或更好)具有对数据后端对象的引用,因此它可以随时请求缓存的数据。
我不确定如何在 kivy 框架中处理这个问题。
这个后端类在哪里?它是根小部件类的一部分,还是“App”类的一部分?
小部件可以直接访问后端对象吗?这是如何实现的?
如何让这些小部件知道我的自定义“new_data”事件,以及如何让小部件监听它?
【问题讨论】: