【问题标题】:Tkinter image blank (without PIL)Tkinter 图像空白(没有 PIL)
【发布时间】:2019-10-25 09:30:52
【问题描述】:

我正在制作一个动画演示,我想在其中添加一个图像,但是我不能使用 PIL,因为它会在没有安装 PIL 的学校演示,所以我使用了网站提供的方法http://effbot.org/pyfaq/why-do-my-tkinter-images-not-appear.htm,但它不起作用 - 我的幻灯片仍然是空白的。我该怎么办?

这是我的代码(几乎完全是从网站上复制的——我错过了什么吗?):

photo = PhotoImage('Alveoli.png')
label = Label(image=photo)
label.image = photo # keep a reference!
label.pack()

【问题讨论】:

  • 导致该问题的代码是什么?如果您只是陈述您的问题,而不是您首先尝试或已经做过的事情,我们将无法回答您。
  • 您无法使用 PhotoImage 打开.png 文件。 The PhotoImage class can read GIF and PGM/PPM images from files
  • @Python IT 那我该如何打开 PNG?如果这就是你的意思,我没有任何与图像相关的代码。
  • Effbot effbot.org/tkinterbook/photoimage.htm 建议 PIL。但是由于您无法使用 PIL,我建议您转换图像;)
  • 用图片编辑软件打开文件,导出为PGM

标签: python image tkinter tkinter-canvas


【解决方案1】:

如果不使用外部图像库,您将无法打开 .png 文件。由于PIL 不可用,我认为其他类似的库也不可用。

编辑:注意:tkinter v8.6+ 支持 PNG 文件。

想到的唯一可能性是将图像转换为另一种兼容格式,例如GIF 或PGM

如果您有其中一种格式的图像,您可以简单地添加它们。使用此代码对我来说效果很好:

from tkinter import *

root = Tk()

photo = PhotoImage(file="img.ppm")

img = Label(root, image=photo)
img.image = photo
img.place(x=0, y=0)

root.mainloop()

【讨论】:

  • @bobbyta74 PhotoImage.zoom() 应该是你需要的。
  • 有分层小部件的命令吗?我想将形状放在图像的“顶部”(“前面”?我不知道如何表达)以便我看到它们,因为现在它们隐藏在它后面。
  • @bobbyta74 img.place(x=0, y=0, relwidth=0, relheight=0) 应该很好。place() 可以将图像放置在主窗口的某个点上。你可以pack() 或grid() 其他小部件就好了。
  • 使用img.place(x=0, y=0, relwidth=0, relheight=0)时,img不知为何消失了。
  • 将1 用于relwidth 和relheight,对不起。这两个选项根据主框架从 0 到 1 缩放 Widget。
猜你喜欢
  • 1970-01-01
  • 2018-04-18
  • 2019-04-20
  • 2019-10-31
  • 2015-08-16
  • 1970-01-01
  • 2016-08-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多