如何将JPEG图片插入Python Tkinter窗口?

26

如何在Python 2.7的Tkinter窗口中插入JPEG图像?以下代码有什么问题?该图像名为Aaron.jpg.

#!/usr/bin/python

import Image
import Tkinter
window = Tkinter.Tk()

window.title("Join")
window.geometry("300x300")
window.configure(background='grey')

imageFile = "Aaron.jpg"

window.im1 = Image.open(imageFile)


raw_input()
window.mainloop()

1
你花了多长时间在这上面? - dilbert
1
额...这个扩展名是干嘛用的? - Kevin
可能没必要说... "请修复代码并将其粘贴在下面!" - metersk
你遇到了什么错误?请查看这个链接,并检查问题是否仍然存在。 - Alok
可能是如何在Tkinter中添加图像(Python 2.7)的重复问题。 - Ciro Santilli OurBigBook.com
2
@dilbert 六年以上 (: - Aaron Esau
3个回答

60

试一下这个:

import tkinter as tk
from PIL import ImageTk, Image

#This creates the main window of an application
window = tk.Tk()
window.title("Join")
window.geometry("300x300")
window.configure(background='grey')

path = "Aaron.jpg"

#Creates a Tkinter-compatible photo image, which can be used everywhere Tkinter expects an image object.
img = ImageTk.PhotoImage(Image.open(path))

#The Label widget is a standard Tkinter widget used to display a text or image on the screen.
panel = tk.Label(window, image = img)

#The Pack geometry manager packs widgets in rows or columns.
panel.pack(side = "bottom", fill = "both", expand = "yes")

#Start the GUI
window.mainloop()

相关文档:ImageTk 模块Tkinter Label 组件Tkinter Pack 布局管理器


9
请注意,原始的 PIL(Python Imaging Library)不兼容 Python 3,但是 Pillow 几乎可以作为一种即插即用的替代品:https://pillow.readthedocs.io/en/latest/index.html - Caspar
2
回复@Caspar的评论,在Python 3(.6)的命令行中,执行pip install pillow以获取该模块。 - Engineer
5
需要注意的是,包含图片的额外"弹出"窗口需要在Label实例化之外指定图片(例如,label = tk.Label(window, image=img),然后在最后label.pack()之前将label.image = img)。 - Chris Collett

1
import tkinter as tk
from tkinter import ttk
from PIL import Image,  ImageTk
win = tk. Tk()
image1 = Image. open("Aoran. jpg")
image2 =  ImageTk. PhotoImage(image1)
image_label = ttk. Label(win , image =.image2)
image_label.place(x = 0 , y = 0)
win.mainloop()

-3
from tkinter import *
from PIL import ImageTk, Image

window = Tk()
window.geometry("1000x300")

path = "1.jpg"

image = PhotoImage(Image.open(path))

panel = Label(window, image = image)

panel.pack()

window.mainloop()

1
请添加一些解释,说明这里正在发生什么。 - Delrius Euphoria

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接