无法将文本正确添加到 tkinter canvas

Cannot add text to tkinter canvas correctly

我正在尝试使用 python 为学校项目开发一个简单的天气应用程序。我正在尝试使用 tkinter canvas 在 python 上完成所有操作,但事实证明这非常困难。我将附上我的代码以及我的 window 的样子。本质上,我试图单击其中一个按钮并将结果填充到我创建的白框顶部,但它现在如何弹出 canvas 并且不确定如何修复。

from tkinter import *
import tkinter as tk
import requests
import json
from tkinter import messagebox

root = Tk()
root.title('Weather App')
canvas = Canvas(root, width =600, height=600)



canvas.create_rectangle(10,150,590,225, outline="black", fill="white", width='4')

def AirQuality ():
    api_request = requests.get("https://www.airnowapi.org/aq/observation/zipCode/current/?format=application/json&zipCode=33174&distance=25&API_KEY=04208BA7-7F60-4FB3-B24B-E03FAE01E2A5")
    api = json.loads(api_request.content)
    city = api[0]['ReportingArea']
    quality = api[0]['AQI']
    category = api[0]['Category']['Name']
    myLabel = Label(root, text = city + " Air Quality " + str(quality) + " " + category, font=("Times new Roman", 20))
    myLabel.pack()
    


b = Button(canvas,text="Air Quality", command=AirQuality, height=1, width=20, compound=LEFT)
b.place(x = 50, y = 250)
   
  

canvas.pack()
root.mainloop()

enter image description here

您可以在 canvas 上制作另一个文本对象,并用天气数据更新它:

# set up output text
result = canvas.create_text(10, 170,font = ("Times New Roman" , 20), anchor='w')

def AirQuality ():
    api_request = requests.get("https://www.airnowapi.org/aq/observation/zipCode/current/?format=application/json&zipCode=33174&distance=25&API_KEY=04208BA7-7F60-4FB3-B24B-E03FAE01E2A5")
    api = json.loads(api_request.content)
    city = api[0]['ReportingArea']
    quality = api[0]['AQI']
    category = api[0]['Category']['Name']
    canvas.itemconfig(result, text = city + " Air Quality " + str(quality) + " " + category)