tkinter没有更新价值

时间:2017-10-03 15:26:42

标签: 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()

2 个答案:

答案 0 :(得分:1)

Nicehash API并不认为您每秒都在轮询它。

我收到了这个回复:

  

'您的API请求配额已被违反。你可以在28秒内再试一次。'

此响应的data JSON不包含“result”字段,因此抛出异常并且不更新标签。此外,它此时停止更新。您可能想要检查是否存在结果字段:

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

或者,做一些异常处理。

答案 1 :(得分:0)

使用外部网络连接测试任何内容都很困难。以下简化代码适用于并更新两个标签。您可以使用它来重建Web请求并显示它们。 (将全局命名空间中的位和总数替换为Web查询,函数内部或其他函数内部)

<jar>