Ткинтер не рисует изображение на холсте - PullRequest
0 голосов
/ 06 января 2019

Tkinter не рисует изображение на холсте из другого метода.

Пример 1 работает, пример 2 не работает. Может кто-нибудь объяснить, почему?

пример 1

def init_gui(self):
    window = tkinter.Tk()
    self.canvas = tkinter.Canvas(self.window, width=1000, height=500)

    photo = PIL.ImageTk.PhotoImage(image=PIL.Image.fromarray(self.img))
    self.canvas.create_image(0, 0, image=photo, anchor=tkinter.NW)
    self.canvas.pack()

    window.mainloop()
    pass

пример 2

def init_gui(self):
    window = tkinter.Tk()
    self.canvas = tkinter.Canvas(self.window, width=1000, height=500)

    self._draw_img() # the exact same code, only in another method

    window.mainloop()
    pass
def _draw_img(self):
    photo = PIL.ImageTk.PhotoImage(image=PIL.Image.fromarray(self.img))
    self.canvas.create_image(0, 0, image=photo, anchor=tkinter.NW)
    self.canvas.pack()
    pass

1 Ответ

0 голосов
/ 06 января 2019

Если я правильно помню, в Tkinter возникает проблема, когда отображаемое изображение выходит из области видимости (потому что это локальная переменная). Попробуйте сделать photo атрибутом вашего класса (заменив photo на self.photo в вашей функции _draw_image) и посмотрите, решит ли это проблему.

Помогает ли это?

Редактировать

Более полное объяснение см. На этом сайте: http://effbot.org/pyfaq/why-do-my-tkinter-images-not-appear.htm

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...