Вам нужно будет удалить старый график и создать новый каждый раз, когда вы измените числа.
Вы должны сделать это, переместив код для рисования гистограммы в функцию.
def draw_barchart(data):
c.delete("all")
for x, y in enumerate(data):
x0 = x * x_stretch + x * x_width + x_gap
y0 = c_height - (y * y_stretch + y_gap)
x1 = x * x_stretch + x * x_width + x_width + x_gap
y1 = c_height - y_gap
c.create_rectangle(x0, y0, x1, y1, fill="red")
c.create_text(x0 + 2, y0, anchor=tk.SW, text=str(y))
Затем вы можете вызывать это всякий раз, когда данные изменяются, передавая новые данные.
Однако есть и другие проблемы с вашим кодом. Вам нужно вызвать mainloop()
в самом конце вашей программы, так как он не вернется, пока окно не будет уничтожено.
Вам также необходимо использовать after
для периодического обновления данных или вызвать tkinter's update
функция, позволяющая окну перерисовываться.
Вот как написать нижнюю часть кода для добавления данных и перерисовки графика каждые пять секунд:
def update():
count = 0
for i in range(5):
data.append(random.randint(1, 11))
c.delete("all")
draw_barchart(data)
root.after(5000, update)
update()
root.mainloop()