Tkinter 标签中的图像?

Shi*_*haz 5 python image tkinter

我是 python GUI 编程的新手,我想在我的 tkinter 标签中添加一个图像,我创建了以下代码但窗口没有显示我的图像。图像路径与此代码相同的文件夹。

import ImageTk
import Tkinter as tk
from Tkinter import *
from PIL import Image


def make_label(master, x, y, w, h, img, *args, **kwargs):
    f = Frame(master, height = h, width = w)
    f.pack_propagate(0) 
    f.place(x = x, y = y)
    label = Label(f, image = img, *args, **kwargs)
    label.pack(fill = BOTH, expand = 1)
    return label


if __name__ == '__main__':
    root = tk.Tk()
    frame = tk.Frame(root, width=400, height=600, background='white')
    frame.pack_propagate(0)
    frame.pack()
    img = ImageTk.PhotoImage(Image.open('logo.png'))
    make_label(root, 0, 0, 400, 100, img)
    root.mainloop()
Run Code Online (Sandbox Code Playgroud)

Art*_*tem 6

出于调试目的,尽量避免使用 PIL 并直接在 PhotoImage 中加载一些 *.gif(或其他可接受的)文件,如下所示,如果它适合您,那么只需将您的图像转换为 *.gif 或尝试处理与 PIL。

from tkinter import *

def make_label(parent, img):
    label = Label(parent, image=img)
    label.pack()

if __name__ == '__main__':
    root = Tk()
    frame = Frame(root, width=400, height=600, background='white')
    frame.pack_propagate(0)    
    frame.pack()
    img = PhotoImage(file='logo.gif')
    make_label(frame, img)

    root.mainloop()
Run Code Online (Sandbox Code Playgroud)

  • 请添加详细信息,说明为什么这会解决问题。这使得低质量答案和高质量答案之间存在差异。一个衬垫对 SO 社区没有多大帮助。 (5认同)