2017-12-01 6 views
-1

私はPythonで新しく、今でもちょっと試しています。自宅にJSON Web APIにリンクされている気象ステーションがあります。 Python経由で私は画面上の温度を読みたいと思います。Python 3のループが機能しない

私は温度がそれ自体を更新していないという問題があります。 Python progrmが正しい温度を取得し始めるとき。しかし、温度が変化すると、pythonスクリプト。変更されません。

import urllib.request 
import json 
from tkinter import * 
import tkinter as tk 


while True: 
    key = "1234" 
    method = "getTemp" 
    data = json.load(urllib.request.urlopen('http://IP.COM/api/api.php?key=' + key + "&request=" + method)) 
    temp = (data[u'temp']) 

    root = Tk() 
    root.title("Temperature board") 
    root.configure(background='#545454') 

    cv = tk.Canvas(width=1000, height=1000, background='#545454') 
    timeLabel = cv.create_text(200, 360, fill="white", text=temp, font=('Arial', 100)) 
    cv.pack() 
    root.mainloop() 

私はこの問題を解決するためのループを作成しようとしましたが、動作していないようでした。

答えて

1

root.mainloop()ブロックです。つまり、実行時にプログラムが停止します。このため、ループは実際には違いはありません。 hereの解を使って温度を更新する関数を実行することができます。そこのトップの答えから解決策を取ると、あなたが次のことを行うことができ

# setup 

def update(): 
    # update temperature 
    root.after(millis between updates, update) 

root.after(millis between updates, update) 

root.mainloop() 
+0

私はTkinterには、すべてがすでに 'update'という名前のメソッドを持っているので、ウィジェットメソッド' update'を呼び出すことに対して推薦します。別の何かをする同じ名前の機能を持つことは、混乱して、道路の下でエラーにつながる可能性があります。 –

関連する問題