簡體   English   中英

Python 2.7 Tkinter:遍歷標簽以在新行上顯示數據

[英]Python 2.7 Tkinter: loop through labels to display data on new row

我目前正在嘗試創建一個天氣應用程序,並且我的代碼可以打印出接下來7天的天氣,天氣預報和最高氣溫。

weather_req_url = "https://api.forecast.io/forecast/%s/%s,%s?units=uk2" % (weather_api_token, lat,lon)
r = requests.get(weather_req_url)
weather_obj = json.loads(r.text)

t = datetime.now()
for i, x in enumerate(weather_obj["daily"]["data"][1:8]):
    print (t+timedelta(days=i+1)).strftime("\t%a"), x['icon'], ("%.0f" % x['temperatureMax'])

此代碼將這些信息打印在外殼程序中:

Sat rain 20
Sun partly-cloudy-day 21
Mon clear-day 26
Tue partly-cloudy-night 29
Wed rain 28
Thu rain 24
Fri rain 23 

我目前有一個框架和一個標簽,但是我不想為每一行手動創建一個標簽。

self.degreeFrm = Frame(self, bg="black")
self.degreeFrm.grid(row = 0, column = 0)

self.temperatureLbl = Label(self.degreeFrm, font=('Helvetica Neue UltraLight', 80), fg="white", bg="black")
self.temperatureLbl.grid(row = 0, column = 0, sticky = E)

有沒有一種方法可以運行用於創建和顯示帶有for循環的每次迭代信息的標簽的第一塊代碼。

就像上面的評論一樣,遵循以下原則可以解決問題:

forecasts = []

for i, x in enumerate(weather_obj["daily"]["data"][1:8]):
    forecasts.append((t+timedelta(days=i+1)).strftime("\t%a"), x['icon'], ("%.0f" % x['temperatureMax']))


row_num = 0
for forecast in forecasts:
    l = Label(self.degreeFrm, font=('Helvetica Neue UltraLight', 80), text = forecast)
    l.grid(row = row_num, column = 0, sticky= E)
    row_num +=1

希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM