python 如何在Tkinter中添加图像?

ffdz8vbo  于 2023-01-04  发布在  Python
关注(0)|答案(9)|浏览(167)

如何在Tkinter中添加图像?
这给了我一个语法错误:

root = tk.Tk()
img = ImageTk.PhotoImage(Image.open(path))
panel = tk.Label(root, image = img)
panel.pack(side = "bottom", fill = "both", expand = "yes")
root.mainloop()
ni65a41a

ni65a41a1#

Win32上的Python 3.3.1 [MSC v.1600 32位(英特尔)] 2013年5月14日
通过遵循上面的代码,这对我很有效

from tkinter import *
from PIL import ImageTk, Image
import os

root = Tk()
img = ImageTk.PhotoImage(Image.open("True1.gif"))
panel = Label(root, image = img)
panel.pack(side = "bottom", fill = "both", expand = "yes")
root.mainloop()
gj3fmq9x

gj3fmq9x2#

上面的代码中没有“语法错误”-它可能发生在其他行(上面的代码不是全部,因为没有导入,也没有path变量的声明),或者您得到了其他错误类型。
在交互式解释器上测试时,上面的示例对我来说运行良好。

8fsztsew

8fsztsew3#

下面是一个Python 3的例子,你可以在Python 2中编辑它;)

from tkinter import *
from PIL import ImageTk, Image
from tkinter import filedialog
import os

root = Tk()
root.geometry("550x300+300+150")
root.resizable(width=True, height=True)

def openfn():
    filename = filedialog.askopenfilename(title='open')
    return filename
def open_img():
    x = openfn()
    img = Image.open(x)
    img = img.resize((250, 250), Image.ANTIALIAS)
    img = ImageTk.PhotoImage(img)
    panel = Label(root, image=img)
    panel.image = img
    panel.pack()

btn = Button(root, text='open image', command=open_img).pack()

root.mainloop()

oymdgrw7

oymdgrw74#

以下代码在我的计算机上有效
1.您的代码中可能缺少一些内容。
1.请同时检查代码文件的编码。
1.确保已安装PIL软件包

import Tkinter as tk
from PIL import ImageTk, Image

path = 'C:/xxxx/xxxx.jpg'

root = tk.Tk()
img = ImageTk.PhotoImage(Image.open(path))
panel = tk.Label(root, image = img)
panel.pack(side = "bottom", fill = "both", expand = "yes")
root.mainloop()
qnzebej0

qnzebej05#

实际代码可能会根据path指向的文件格式返回一个错误。也就是说,PhotoImage类已经支持一些图像格式,如.gif、.pgm(如果tk.TkVersion〉= 8.6,则为.png)。
下面是一个显示的示例:

或者如果tk.TkVersion < 8.6

try:                        # In order to be able to import tkinter for
    import tkinter as tk    # either in python 2 or in python 3
except ImportError:
    import Tkinter as tk

def download_images():
    # In order to fetch the image online
    try:
        import urllib.request as url
    except ImportError:
        import urllib as url
    url.urlretrieve("https://i.stack.imgur.com/IgD2r.png", "lenna.png")
    url.urlretrieve("https://i.stack.imgur.com/sML82.gif", "lenna.gif")

if __name__ == '__main__':
    download_images()
    root = tk.Tk()
    widget = tk.Label(root, compound='top')
    widget.lenna_image_png = tk.PhotoImage(file="lenna.png")
    widget.lenna_image_gif = tk.PhotoImage(file="lenna.gif")
    try:
        widget['text'] = "Lenna.png"
        widget['image'] = widget.lenna_image_png
    except:
        widget['text'] = "Lenna.gif"
        widget['image'] = widget.lenna_image_gif
    widget.pack()
    root.mainloop()
dnph8jn4

dnph8jn46#

它不是python 2.7的标准库,所以为了让这些库正常工作,如果你使用的是Python 2.7,你应该先下载PIL库:
https://pillow.readthedocs.io/en/latest/installation.html
安装后,请执行以下步骤:
1.确保您的script.py与您要显示的图像位于同一文件夹中。
1.编辑
脚本.py**

from Tkinter import *        
from PIL import ImageTk, Image

app_root = Tk()

#Setting it up
img = ImageTk.PhotoImage(Image.open("app.png"))

#Displaying it
imglabel = Label(app_root, image=img).grid(row=1, column=1)        

app_root.mainloop()

希望能有所帮助!

cld4siwp

cld4siwp7#

这段代码对我很有效,你也应该考虑如果你在那个窗口中有任何其他按钮或标签,而你不使用.place(),它将无法正常工作。

from Tkinter import*
from PIL import Image, ImageTk

img  = Image.open("path/x.png") 
photo=ImageTk.PhotoImage(img)
lab=Label(image=photo).place(x=50,y=50)
jvidinwx

jvidinwx8#

这是一个Python版本问题。如果你使用的是最新版本,那么你的旧语法将不起作用,并给予你这个错误。请按照@Josav09的代码,你会没事的。

sycxhyv7

sycxhyv79#

只需将jpg格式的图像转换为png格式。它将工作100%。

相关问题