首页 > 解决方案 > 无法在 tkinter 中显示图像

问题描述

我正在尝试让图像显示在 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()

TypeError:“PhotoImage”对象不可调用

标签: pythonimagetkintertkinter-canvas

解决方案


问题是 tkinter 以某种方式将图像绑定到窗口,而不是您的情况。您应该使用self.canvas.image = ImageTk.PhotoImage(im)self.canvas.create_image(20, 20, anchor='nw', image=self.canvas.image)。希望这会有所帮助!


推荐阅读