Не удается получить изображение для отображения в tkinter - PullRequest
1 голос
/ 23 октября 2019

Я пытаюсь получить изображение для отображения на холсте tkinter.

Я знаю, что Canvas работает с фигурами и текстом, но изображение не работает.

Я использую PIL ImageTK.PhotoImage, однако это также не работает при создании Tkinter.PhotoImage с использованием изображения .ppm.

Изображение 'png' хранится в том же каталоге, что и файл python.

import tkinter as tk
from PIL import Image, ImageTk


class Window:
    def __init__(self):
        self.window = tk.Tk()
        self.window.title("COMP")
        self.window.geometry("1200x600")

        topframe = tk.Frame(self.window, highlightbackground='black', highlightthickness=1)
        topframe.pack(side='top')
        self.noteview = NoteView(topframe, self.songString)


class NoteView:
    def __init__(self, frame):
        self.canvas = tk.Canvas(frame, width=60, height=200)
        self.canvas.pack()

        self.canvas.create_text(15, 190, text='hi')
        im = Image.open('png.png')
        self.image = ImageTk.PhotoImage(im)
        self.canvas.create_image(20, 20, anchor='nw', image=self.image)

w = Window()

Ошибка типа: объект PhotoImage не может быть вызван

1 Ответ

0 голосов
/ 23 октября 2019

Проблема в том, что tkinter как-то привязывает изображение к окну, а не в вашем случае. Вы должны использовать self.canvas.image = ImageTk.PhotoImage(im) и self.canvas.create_image(20, 20, anchor='nw', image=self.canvas.image). Надеюсь, что это полезно!

...