Ошибка "list index out of range"
from tkinter import *
from random import *
tk = Tk()
tk.title("Метеорологічні дослідження")
tk.geometry("400x250")
def btn_click():
y = []
Lbox.delete(0, END)
for i in range(7):
y.append(randint(15, 25))
Lbox.insert(END, y[i])
for i in range(6):
canvas.create_line(x[i], 200-y[i*5], x[i+1], 200-y[i+1]*5, fill="blue")
canvas = Canvas(tk,width=290,height=250)
canvas.place(x=110 ,y=0)
canvas.create_line(30, 200, 270, 200, arrow=LAST)
canvas.create_line(30, 200, 30, 10, arrow=LAST)
Lbl = Label(text="Температура")
Lbl.place(x=20, y=20)
Lbox = Listbox(width=10, height=7)
Lbox.place(x=20, y=50)
Btn=Button(text="Побудувати", command=btn_click)
Btn.place(x=20, y=180)
for i in range(7):
x=[60, 90, 120, 150, 180, 210, 240]
canvas.create_line(x[i], 195, x[i], 205)
canvas.create_text(x[i], 215, text=i+1)
for i in range(5,36,5):
canvas.create_line(25, 200-i*5, 35, 200-i*5)
canvas.create_text(15, 200-i*5, text=i)
Ошибку выдает в строке
canvas.create_line(x[i], 200-y[i*5], x[i+1], 200-y[i+1]*5, fill="blue")
Объясните, пожалуйста, доступно новичку?
Ответы (1 шт):
Автор решения: Вася Воронцов
→ Ссылка
Ошибка означает, что запрашиваемых индекс выходит за пределы допустимого. А именно: y содержит 7 элементов, но далее вы пытаетесь получить элемент с индексом i*5 (в крайнем случае это 6*5=30), что гораздо больше 6. Исправьте на
canvas.create_line(x[i], 200 - y[i]*5, x[i+1], 200 - y[i+1]*5, fill="blue")
P.S. вы уверены в использовании одного и того же счётчика i для двух циклов (один - в другом)?