Изображение не будет отображаться на холсте tkinter

Я действительно надеюсь на некоторую помощь в этом, потому что это меня совершенно озадачило. У меня есть код, работающий сам по себе, как показано ниже:

from tkinter import *
from PIL import ImageTk

dam_level = [75]

c = Canvas(width = 200, height = 235, relief = "sunken", borderwidth = 2)
c.grid(row = 11, rowspan = 8, column = 4, columnspan = 2)

c_width = 200 
c_height = 250

y_stretch = 1.9

y_gap = 35

x_stretch = 15
x_width = 90

x_gap = 30

for x, y in enumerate(dam_level):

    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 = "#008ae8")

    y = (str(y))
    c.create_text(x0 + 10, y0, anchor = SW, text = (y, "%"))
    c.create_text(x0 + 60, y1 + 5, anchor = N, text = "Catchment")
    photo = ImageTk.PhotoImage(file =    
    "/Users/Name/Desktop/python3.4/water.png")
    c.create_image(10, 10, image = photo, anchor = NW)

mainloop()

Однако, когда я поместил его в свое основное приложение в свою собственную функцию (с остальной частью моего кода), изображение не будет отображаться. Отображается график и холст, а не изображение water.png. Там нет журнала ошибок или чего-то еще. Единственное изменение, которое я делаю, когда добавляю это в свое приложение, — это добавление «я» в эту строку. (И я, конечно, удаляю «mainloop ()»).

c = Canvas(self, width = 200, height = 235, relief = "sunken", borderwidth = 2)

Любые предложения будут ценны.


person SGB    schedule 22.06.2015    source источник
comment
effbot.org/pyfaq/why-do-my- tkinter-images-not-appear.htm   -  person Bryan Oakley    schedule 22.06.2015


Ответы (1)


Спасибо, Брайан, за то, что указал мне правильное направление.

Исправлено с:

c.image = photo
person SGB    schedule 22.06.2015