Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Tkinter标签中的图像?_Python_Image_Tkinter - Fatal编程技术网

Python Tkinter标签中的图像?

Python Tkinter标签中的图像?,python,image,tkinter,Python,Image,Tkinter,我是PythonGUI编程新手,我想在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,

我是PythonGUI编程新手,我想在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()

出于调试目的,尽量避免使用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()

请详细说明这将解决问题的原因。这就决定了低质量答案和高质量答案之间的区别。一句俏皮话对大家都没什么帮助。对我来说很好。这是你的真实代码吗?如果不是的话,我的猜测是。你有什么错误吗?没有,没有错误,只有一个空窗口。正如我所说,对我来说很好。。。因此,如果这是您的原始代码,是否您的“logo.png”实际上要大得多,而您看到的只是它的左上角(白色)呢?另外,您使用的是什么确切的python版本?明白了,logo.png太大了,无法显示。谢谢您可以使用
Image.open('logo.png')。resize((400100))
来调整它的大小。请解释代码的作用,以及它如何解决OP的问题。只有代码而没有解释的答案对其他读者没有用处,因此很可能会吸引反对票。
       img = Image.open('image_name')
       self.tkimage = ImageTk.PhotoImage(img)
       Label(self,image = self.tkimage).place(x=0, y=0, relwidth=1, relheight=1)