Tkinter背景不显示透明

时间:2017-05-09 12:19:02

标签: python-2.7 tkinter tkinter-canvas

在我的代码中,我是python的新手,有一个动画gif,每当我运行代码时都会播放。当在adobe等中打开时,gif图像实际上是透明的,但问题是当我运行代码时.gif中包含的颜色为灰色的框架。我想要删除颜色灰色以便唯一可以看到的是我唯一的动画gif

这是我的代码:

# mimic an animated GIF displaying a series of GIFs
# an animated GIF was used to create the series of GIFs 
# with a common GIF animator utility

import time
from Tkinter import *

root = Tk()

imagelist = ["dog001.gif","dog002.gif","dog003.gif"]

# extract width and height info
photo = PhotoImage(file=imagelist[0])
width = photo.width()
height = photo.height()
canvas = Canvas(width=width, height=height)
canvas.create_line(0,240,640,240, fill='blue')
canvas.pack()

# create a list of image objects
giflist = []
for imagefile in imagelist:
    photo = PhotoImage(file=imagefile)
    giflist.append(photo)

# loop through the gif image objects for a while
for k in range(0, 10):
    for gif in giflist:
        canvas.delete(ALL)
        canvas.create_image(width/2.0, height/2.0, image=gif)
        canvas.update()
        time.sleep(0.1)

root.mainloop()[![enter image description here][1]][1]

dog001.gif

dog002.gif

dog003.gif

1 个答案:

答案 0 :(得分:3)

正如here所述,可以使Tkinter窗口透明,但取决于您的操作系统。

如果您使用的是Windows,请在创建root后添加以下行:

root = Tk()
# Hide the root window drag bar and close button
root.overrideredirect(True)
# Make the root window always on top
root.wm_attributes("-topmost", True)
# Define a transparent color
root.wm_attributes("-transparentcolor", '#eeefff')

然后将画布的背景颜色设置为上面定义的透明颜色:

canvas = Canvas(width=width, height=height, bg='#eeefff', highlightthickness=0)

screenshot