【发布时间】:2021-04-10 22:49:35
【问题描述】:
操作系统:Windows 10
Python 3.8
我正在尝试显示具有透明度的 PNG 图像,没有标题栏,或任何其他窗口信息指示(想象在您的屏幕上粘贴贴纸)。我已经用另一种语言完成了一次,方法是将图像放在窗口中并删除窗口的所有元素,包括标题栏和背景,但我无法在 python 中实现。
我已经尝试过 Tkinter,但似乎它不是为使用 PNG 透明度而设计的,并且它不能为父窗口和子窗口提供单独的透明度。
现在我正在尝试 wxPython。我的想法是可以使父窗口透明而子窗口(保存图像)不透明,但不知道这是否可能。
这是我尝试的简化版本:
app = wx.App()
path = 'Images/02.png'
bitmap = wx.Bitmap(path, wx.BITMAP_TYPE_PNG) # Create bitmap
frame = wx.Frame(None,-1,'Transparent Window',size=(1000,1000)) # Create frame (top level window)
frame.SetTransparent(100) # Change transparency of the frame
panel = wx.Panel(frame, -1) # Create panel (to hold the image)
wx.StaticBitmap(panel, -1, bitmap) # Put the image in the panel
panel.SetTransparent(255) # Change transparency of the panel (the image)
frame.Show()
app.MainLoop()
但不幸的是,“.SetTransparent()”只适用于顶级窗口,所以我无法将面板的透明度设置为其他任何内容。
但基本上,问题是,是否可以使用 Python 单独显示具有透明度的图像? 我不是在寻找任何具体的方法来实现这一点,我提供的只是我知道的唯一一种。所以如果可以的话,请帮助我:)
编辑 1: 尝试使用 wx.lib.agw.advancedsplash:
import wx
import wx.lib.agw.advancedsplash as AS
app = wx.App()
frame = wx.Frame(None, -1, "AdvancedSplash Test")
imagePath = "Images/05.png"
bitmap = wx.Bitmap(imagePath)
splash = AS.AdvancedSplash(frame, bitmap=bitmap)
app.MainLoop()
但它仍然会填充透明区域
【问题讨论】:
标签: python user-interface wxpython