首页 > 解决方案 > time.sleep 函数在 kivy 应用程序中不起作用

问题描述

我这里有一个显示当前比特币价格的简单应用程序:

import kivy
from kivy.app import App
from kivy.uix.label import Label 
import requests 
import time 


class MyApp(App):
    def build(self):
        while True:
            
            url = requests.get("https://api.coingecko.com/api/v3/simple/price?ids=bitcoin&vs_currencies=usd").json()
            price = url['bitcoin']['usd']
            return Label(text="Bitcoin Price\n " + str(price) + " USD", font_size=72)
            time.sleep(10)


if __name__ == '__main__':
    MyApp().run()

当我运行这个应用程序时,它可以工作,但是根据 coingecko api,它们每 120 秒更新一次价格,但我的应用程序中的价格永远不会更新。

我尝试将时间设置为 120 秒 10 秒 30 秒等,但我的价格在运行后没有更新。而且我在运行问题时没有收到任何错误,所以我不知道问题是什么

标签: pythonkivy

解决方案


您从循环build()中返回。while True

这就是它停止的地方:它将创建并返回一个Label对象,然后完成。这条线time.sleep(10)永远不会到达。

编辑澄清:TO没有要求解决方案,而是要求解释行为。


推荐阅读