Tkinter 标签显示不正确
Tkinter Labels not displaying correctly
我正在练习 API 集成到我的一些项目中,我想尝试练习一些词典。
提取天气数据和长话短说:尝试创建简单的 tkinter 应用程序,它将向我展示这本词典中的内容。
import tkinter as tk
window = tk.Tk()
sample = {"location": {"name": "Belgrade", "region": "Central Serbia", "country": "Serbia", "lat": 44.8, "lon": 20.47, "tz_id": "Europe/Belgrade", "localtime_epoch": 1643798038, "localtime": "2022-02-02 11:33"}, "current": {"last_updated_epoch": 1643796900, "last_updated": "2022-02-02 11:15", "temp_c": 2.0, "temp_f": 35.6, "is_day": 1, "condition": {"text": "Sunny", "icon": "//cdn.weatherapi.com/weather/64x64/day/113.png", "code": 1000}, "wind_mph": 0.0, "wind_kph": 0.0, "wind_degree": 228, "wind_dir": "SW", "pressure_mb": 1009.0, "pressure_in": 29.8, "precip_mm": 0.0, "precip_in": 0.0, "humidity": 100, "cloud": 0, "feelslike_c": -1.4, "feelslike_f": 29.6, "vis_km": 10.0, "vis_miles": 6.0, "uv": 1.0, "gust_mph": 9.2, "gust_kph": 14.8, "air_quality": {"co": 317.1000061035156, "no2": 13.399999618530273, "o3": 45.400001525878906, "so2": 10.5, "pm2_5": 11.399999618530273, "pm10": 15.600000381469727, "us-epa-index": 1, "gb-defra-index": 1}}}
for j, k in sample['location'].items():
tk.Label(window, text=j).grid(column=0)
tk.Label(window, text=k).grid(column=1)
window.mainloop()
但是,当我完成它时,我发现了一些奇怪的事情:键:值对以之字形顺序添加,而不是一个接一个地添加。
例如:
'name' 键的位置是 (0,0)。但是它的值放在 (1, 1) 处。
我可以将所有内容放在单列中,这样它就会得到某种排序和可读性,但是,我很想了解为什么输出是这样的。
Strange pattern
您可以使用变量设置行。
我在这个例子中称它为 row
:
import tkinter as tk
window = tk.Tk()
sample = {"location": {"name": "Belgrade", "region": "Central Serbia", "country": "Serbia", "lat": 44.8, "lon": 20.47, "tz_id": "Europe/Belgrade", "localtime_epoch": 1643798038, "localtime": "2022-02-02 11:33"}, "current": {"last_updated_epoch": 1643796900, "last_updated": "2022-02-02 11:15", "temp_c": 2.0, "temp_f": 35.6, "is_day": 1, "condition": {"text": "Sunny", "icon": "//cdn.weatherapi.com/weather/64x64/day/113.png", "code": 1000}, "wind_mph": 0.0, "wind_kph": 0.0, "wind_degree": 228, "wind_dir": "SW", "pressure_mb": 1009.0, "pressure_in": 29.8, "precip_mm": 0.0, "precip_in": 0.0, "humidity": 100, "cloud": 0, "feelslike_c": -1.4, "feelslike_f": 29.6, "vis_km": 10.0, "vis_miles": 6.0, "uv": 1.0, "gust_mph": 9.2, "gust_kph": 14.8, "air_quality": {"co": 317.1000061035156, "no2": 13.399999618530273, "o3": 45.400001525878906, "so2": 10.5, "pm2_5": 11.399999618530273, "pm10": 15.600000381469727, "us-epa-index": 1, "gb-defra-index": 1}}}
row = 0
for j, k in sample['location'].items():
tk.Label(window, text=j).grid(column=0,row=row)
tk.Label(window, text=k).grid(column=1,row=row)
row += 1
window.mainloop()
我正在练习 API 集成到我的一些项目中,我想尝试练习一些词典。 提取天气数据和长话短说:尝试创建简单的 tkinter 应用程序,它将向我展示这本词典中的内容。
import tkinter as tk
window = tk.Tk()
sample = {"location": {"name": "Belgrade", "region": "Central Serbia", "country": "Serbia", "lat": 44.8, "lon": 20.47, "tz_id": "Europe/Belgrade", "localtime_epoch": 1643798038, "localtime": "2022-02-02 11:33"}, "current": {"last_updated_epoch": 1643796900, "last_updated": "2022-02-02 11:15", "temp_c": 2.0, "temp_f": 35.6, "is_day": 1, "condition": {"text": "Sunny", "icon": "//cdn.weatherapi.com/weather/64x64/day/113.png", "code": 1000}, "wind_mph": 0.0, "wind_kph": 0.0, "wind_degree": 228, "wind_dir": "SW", "pressure_mb": 1009.0, "pressure_in": 29.8, "precip_mm": 0.0, "precip_in": 0.0, "humidity": 100, "cloud": 0, "feelslike_c": -1.4, "feelslike_f": 29.6, "vis_km": 10.0, "vis_miles": 6.0, "uv": 1.0, "gust_mph": 9.2, "gust_kph": 14.8, "air_quality": {"co": 317.1000061035156, "no2": 13.399999618530273, "o3": 45.400001525878906, "so2": 10.5, "pm2_5": 11.399999618530273, "pm10": 15.600000381469727, "us-epa-index": 1, "gb-defra-index": 1}}}
for j, k in sample['location'].items():
tk.Label(window, text=j).grid(column=0)
tk.Label(window, text=k).grid(column=1)
window.mainloop()
但是,当我完成它时,我发现了一些奇怪的事情:键:值对以之字形顺序添加,而不是一个接一个地添加。 例如: 'name' 键的位置是 (0,0)。但是它的值放在 (1, 1) 处。 我可以将所有内容放在单列中,这样它就会得到某种排序和可读性,但是,我很想了解为什么输出是这样的。 Strange pattern
您可以使用变量设置行。
我在这个例子中称它为 row
:
import tkinter as tk
window = tk.Tk()
sample = {"location": {"name": "Belgrade", "region": "Central Serbia", "country": "Serbia", "lat": 44.8, "lon": 20.47, "tz_id": "Europe/Belgrade", "localtime_epoch": 1643798038, "localtime": "2022-02-02 11:33"}, "current": {"last_updated_epoch": 1643796900, "last_updated": "2022-02-02 11:15", "temp_c": 2.0, "temp_f": 35.6, "is_day": 1, "condition": {"text": "Sunny", "icon": "//cdn.weatherapi.com/weather/64x64/day/113.png", "code": 1000}, "wind_mph": 0.0, "wind_kph": 0.0, "wind_degree": 228, "wind_dir": "SW", "pressure_mb": 1009.0, "pressure_in": 29.8, "precip_mm": 0.0, "precip_in": 0.0, "humidity": 100, "cloud": 0, "feelslike_c": -1.4, "feelslike_f": 29.6, "vis_km": 10.0, "vis_miles": 6.0, "uv": 1.0, "gust_mph": 9.2, "gust_kph": 14.8, "air_quality": {"co": 317.1000061035156, "no2": 13.399999618530273, "o3": 45.400001525878906, "so2": 10.5, "pm2_5": 11.399999618530273, "pm10": 15.600000381469727, "us-epa-index": 1, "gb-defra-index": 1}}}
row = 0
for j, k in sample['location'].items():
tk.Label(window, text=j).grid(column=0,row=row)
tk.Label(window, text=k).grid(column=1,row=row)
row += 1
window.mainloop()