【问题标题】:How do I make Tkinter support PNG transparency?如何让 Tkinter 支持 PNG 透明度?
【发布时间】:2011-03-17 06:14:34
【问题描述】:

我在 Tkinter 中放入了一个部分透明的 PNG 图像,我得到的就是这个

如何使右侧的黑色三角形清晰? (就像它应该是的那样)

这是 Windows 7 上的 python 2.6,顺便说一句。

【问题讨论】:

  • 您能否确认该图像在另一个程序中以透明方式显示?

标签: python png transparency tkinter


【解决方案1】:

这是一个例子(PNG 文件 example.png 在不同的地方有很多透明度):

from Tkinter import Tk, Frame, Canvas
import ImageTk

t = Tk()
t.title("Transparency")

frame = Frame(t)
frame.pack()

canvas = Canvas(frame, bg="black", width=500, height=500)
canvas.pack()

photoimage = ImageTk.PhotoImage(file="example.png")
canvas.create_image(150, 150, image=photoimage)

t.mainloop()

您需要确保图像已存储为“RGBA”,即带有 Alpha 通道的 RGB。您可以使用您选择的图形程序或使用 PIL (Python Imaging Library) 进行检查:

import Image
im = Image.open("button.png")
print im.mode

这应该打印“RGBA”。如果没有,您必须确保 Alpha 通道与图像一起保存。您必须查阅您的图形程序手册以了解如何执行此操作。

【讨论】:

  • 我可能会注意到ImageTk 不是 Python 标准库的一部分,而是 Python 图像库的一部分,它必须单独安装。此外,PIL 尚不支持 Python 3,因此上述代码仅适用于 Python 2.x。
  • @fbmd:好的 cmets。这是一个相关的帖子:stackoverflow.com/questions/3896286/image-library-for-python-3
  • PIL 已被枕头包分叉并或多或少地被枕头包所取代,它确实支持 3.x。
猜你喜欢
  • 2011-06-08
  • 2012-03-29
  • 2013-04-11
  • 2012-02-27
  • 1970-01-01
  • 2010-09-05
  • 2010-11-25
  • 1970-01-01
  • 2012-05-29
相关资源
最近更新 更多