Tkinter Label 中的图像?

9 投票
2 回答
71110 浏览
提问于 2025-04-19 08:18

我刚开始学习用Python做图形界面编程,想在我的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()

2 个回答

3
       img = Image.open('image_name')
       self.tkimage = ImageTk.PhotoImage(img)
       Label(self,image = self.tkimage).place(x=0, y=0, relwidth=1, relheight=1)

当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。

9

为了调试,尽量不要使用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()

撰写回答