python - tkinter 不更新值

标签 python python-3.x tkinter

在下面的代码中,我使用 tkinter 显示两个值。第一个值更新得很好,但第二个值似乎没有更新。我的结构相同,所以我认为它应该更新。有什么原因不会吗?

#!/usr/bin/env python3
# imports
import requests
import time
from tkinter import *
import urllib.request, json

# variables
def get_coinbase_price():
    url = 'https://api.coinbase.com/v2/prices/USD/spot?'
    req = requests.get(url)
    data = req.json()
    bit = (data['data'][0]['amount'])
    thelabel.config(text = "1 BTC = %s USD" % bit)
    root.after(1000, get_coinbase_price)


def get_nicehash_stats():
    with urllib.request.urlopen(
            "https://api.nicehash.com/api?method=stats.provider.ex&addr=37sCnRwMW7w8V7Y4zyVZD5uCmc9N1kZ2Q8") as url:
        data = json.loads(url.read().decode())
    total = 0
    for val in data['result']['current']:
        total += float(val['data'][1])
    secondlabel.config(text="Nicehash stats = %s " % total)
    root.after(1000, get_nicehash_stats)



# gui workspace
root = Tk()
thelabel = Label(root, text="")
secondlabel = Label(root, text="")
thelabel.pack()
secondlabel.pack()
root.after(1000, get_coinbase_price)
root.after(1000, get_nicehash_stats)
root.mainloop()

最佳答案

Nicehash API 不喜欢您每秒轮询它。

我收到这样的回复:

'Your API request quota has been breached. You can try again in 28 seconds.'

此响应的 data JSON 不包含“结果”字段,因此会引发异常并且标签不会更新。而且,它此时停止更新。您可能想检查是否有结果字段:

if 'result' in data:
    for val in data['result']['current']:
        ...

或者,进行一些异常处理。

关于python - tkinter 不更新值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46548186/

相关文章:

python - 在 Python3 中按索引访问 dict_keys 元素

单击矩形时的python tkinter Canvas

python - 如何在框架内创建框架?

python - 创建文件夹中每个文件内容的索引

python - 向量矩阵乘法的标量向量乘法

python - 为什么 Python 3 在我的 Python 2.7 包目录中查找包?

python - 无法强制脚本不在控制台中打印错误日志详细信息

python - 如何在 tkinter 中找出当前小部件的大小?

python - Django -- 新字段 : How to set default callable for existing objects

python - 在 Python 脚本中的 Windows 中的 C++ 命令行编译