python - 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 秒等,但我的价格在运行后没有更新。而且我在运行问题时没有收到任何错误,所以我不知道问题是什么
解决方案
您从循环build()
中返回。while True
这就是它停止的地方:它将创建并返回一个Label
对象,然后完成。这条线time.sleep(10)
永远不会到达。
编辑澄清:TO没有要求解决方案,而是要求解释行为。
推荐阅读
- java - 使用 GeckoDriver 和 Firefox 时无法联系:java.nio.channels.ClosedByInterruptException
- css - Safari 上的响应式网格 CSS 问题
- javascript - JSON 属性未在第三次函数调用时更新新键的值
- php - Objects Array 获取特定对象并一起显示 PHP
- php - 我的查询不返回数据
- c# - 在字体中显示 0x00-0x1F 字符
- c# - Xamarin UI 测试:是否可以在 UITesting 期间与操作系统级别的对话进行交互
- r - 根据最近的最低日期合并数据集
- sql-server - 带有“1”个参数的“GetDirectoryName”:“路径不是合法形式。” - SQL Server VSTS CI-CD 部署
- r - 在 Plotly/Shiny 中使用代理接口动态更改数据