Я пишу приложение GUI в Python, используя Tkinter
. Приложение отображает данные о погоде для любого места и периода времени, выбранных пользователем. Пользователь может отображать данные о погоде за одну неделю и один месяц. Я пытаюсь отобразить эти данные в таблице, но получаю следующую ошибку:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\Kevin\AppData\Local\Programs\Python\Python38\lib\tkinter\__init__.py", line 1883, in __call__
return self.func(*args)
File "C:\Users\Kevin\Documents\Python\Weather Data Application\WeatherData.py", line 109, in getdata
for i, high, low, precip, conditions in enumerate(list, start = 1):
ValueError: not enough values to unpack (expected 5, got 2)
В таблице должно быть 5 столбцов. Я не уверен, почему я получаю эту ошибку, поскольку у меня есть все элементы, которые я хочу отобразить в определяемом мною списке. Часть кода, в которой возникает моя ошибка, показана ниже:
#Display Data
for i in range(0,len(value)):
#Display data for one day
maxtemp = tk.Label(text = weather['locations'][place]['values'][i]['maxt'])
mintemp = tk.Label(text = weather['locations'][place]['values'][i]['mint'])
precipitation = tk.Label(text = weather['locations'][place]['values'][i]['precip'])
condition = tk.Label(text = weather['locations'][place]['values'][i]['conditions'])
if (radiovalue.get() == 2 and len(value) == 7) or radiovalue.get() == 3:
root.withdraw()
def goBack():
root.deiconify()
data.withdraw()
#new window
data = tk.Tk()
tablelabel = tk.Label(data, text = "Weather Data").grid(row = 0, columnspan = 5)
cols = ('Date', 'High Temperature', 'Low Temperature', 'Precipitation', 'Conditions')
weatherBox = ttk.Treeview(data, columns = cols, show = 'headings')
back = tk.Button(data, text = "Go Back", command = goBack).grid(row = 1)
for col in cols:
weatherBox.heading(col, text = col)
weatherBox.grid(row = 1, column = 0, columnspan = 5)
list = [weather['locations'][place]['values'][i]['maxt'],weather['locations'][place]['values'][i]['mint'],
weather['locations'][place]['values'][i]['precip'],weather['locations'][place]['values'][i]['conditions']]
for i, high, low, precip, conditions in enumerate(list, start = 1):
weatherBox.insert(values = (i, high, low, precip, conditions))