我已经找到了如何为按钮设置图像,这些图像位于标签的顶部(我认为我可能会以冗长的方式进行操作,因为我无法在我的Mac上安装PIL出于某种原因)。无论如何,它在某种程度上应该起作用 - 我遇到的问题是它在任何一侧添加了空白区域,然后图像本身没有显示其透明背景。
我使用的代码如下:
from tkinter import *
#from PIL import Image
root = Tk()
#Removes the title bar and places over mac top bar
root.tk.call("::tk::unsupported::MacWindowStyle", "style", root._w, "plain", "none")
# Makes the app full screen
#root.wm_attributes('-fullscreen', 1)
root.geometry('{}x{}'.format(480, 320))
#root.attributes('-topmost', True)
def quitApp():
# mlabel = Label (root, text = 'Close').pack()
root.destroy()
background_img = PhotoImage(file="images/bg.gif")
scanBtn_img = PhotoImage(file="images/scanBtn.gif")
background = Label(root,
compound = CENTER,
quitButton = Button(image=scanBtn_img, command = quitApp).pack(),
image = background_img).pack(side="right")
background.image = background_img # keep a reference!
root.mainloop()
答案 0 :(得分:0)
根据我的理解,tkinter本身支持像GIF这样的图像的透明度。
我把你的代码切碎了一点,但它对我有用。也许您的代码设置方式存在问题。您的标签上还有一个按钮。我认为你不需要两者都有。你可以在你想要的地方创建按钮。
仅供参考,我创建了一个标签和一个包含在黑色背景不同侧面的按钮,以显示图像的透明度。
以下是我用来测试具有透明度的gif
的代码。我在python 3.6和2.7上测试了这个以防万一。
from tkinter import *
root = Tk()
def quitApp():
root.destroy()
background_img = PhotoImage(file="Colors/sa.gif")
scanBtn_img = PhotoImage(file="Colors/sa.gif")
background = Label(root,bg='black', image = background_img).pack(side = RIGHT)
quitButton = Button(bg='black', image=scanBtn_img, command = quitApp).pack(side = LEFT)
backgroundimage = background_img # keep a reference!
root.mainloop()
更新:我使用了你在评论中链接的gif
结果如下。
更新
在进行了一些挖掘之后,我发现了可能对Mac OS有用的东西:
我现在没有Mac测试,请告诉我这是否适合您:
from tkinter import *
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)
# Make the window content area transparent
root.wm_attributes("-transparent", True)
# Set the root window background color to a transparent color
root.config(bg='systemTransparent')
def quitApp():
root.destroy()
background_img = PhotoImage(file="Colors/1.gif")
scanBtn_img = PhotoImage(file="Colors/1.gif")
background = Label(root,bg='black', image = background_img).pack(side = RIGHT)
background.config(bg='systemTransparent')
quitButton = Button(bg='black', image=scanBtn_img, command = quitApp).pack(side = LEFT)
quitButton.config(bg='systemTransparent')
backgroundimage = background_img # keep a reference!
root.mainloop()