如何将图像加载到 python 3.4 tkinter 窗口中?

新手上路,请多包涵

我花了一些时间在网上查找,但到目前为止还没有找到任何不使用 PIL 就可以解决这个问题的方法,我无法开始工作是否有另一种方法可以简单地做到这一点?

原文由 LuGibs 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 635
2 个回答

tkinter 有一个 PhotoImage 类,可用于显示 GIF 图像。如果你想要其他格式(除了过时的 PGM/PPM 格式),你需要使用 PIL 或 Pillow 之类的东西。

 import Tkinter as tk

root = tk.Tk()
image = tk.PhotoImage(file="myfile.gif")
label = tk.Label(image=image)
label.pack()
root.mainloop()

需要注意的是,如果将这段代码移动到函数中,可能会出现问题。上面的代码之所以有效,是因为它在全局范围内运行。使用函数时,图像对象可能会在函数退出时被垃圾回收,这将导致标签显示为空白。

有一个简单的解决方法(保存对图像对象的持久引用),但上面代码的重点是尽可能显示最简单的代码。

有关详细信息,请参阅此网页: 为什么我的 Tkinter 图像不显示?

原文由 Bryan Oakley 发布,翻译遵循 CC BY-SA 4.0 许可协议

您可以使用适用于 python 3 的 PIL 库。首先,您需要使用此命令(使用 pip)安装 PIL: pip install pillow 然后:

 `from tkinter import *`

from PIL import Image, ImageTk

 `class Window(Frame):`

    `def __init__(self, master=None):
        Frame.__init__(self, master)
        self.master = master
        self.pack(fill=BOTH, expand=1)
        load = Image.open("parrot.jpg")
        render = ImageTk.PhotoImage(load)
        img = Label(self, image=render)
        img.image = render
        img.place(x=0, y=0)`

原文由 Pedram Nouri 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题