在wxpython中使用SetTransparent(val)可以使整个帧透明。但我能在里面做一个透明的面板吗?
我试过使用panelobj.SetTransparent(val),但那行不通。
import wx
class MyFrame(wx.Frame):
def __init__(self, parent, id, title):
wx.Frame.__init__(self, parent, id, title,size=(250, 250))
topPanel = wx.Panel(self)
panel1 = wx.Panel(topPanel, -1)
panel1.SetTransparent(100)
panel2 = wx.Panel(topPanel, -1)
panel2.SetBackgroundColour('gray')
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(panel1,1,flag = wx.EXPAND|wx.ALL)
sizer.Add(panel2,1,flag = wx.EXPAND|wx.ALL)
topPanel.SetSizer(sizer)
class MyApp(wx.App):
def OnInit(self):
frame = MyFrame(None, -1, 'frame')
frame.Show(True)
return True
app = MyApp(0)
app.MainLoop()假设我想为panel1设置透明度。
发布于 2015-04-29 11:36:41
它是特定于平台的窗口可以和不能变得透明。
CanSetTransparent方法允许您检查是否可以在运行时切换窗口的透明度。如果它返回false,SetTransparent将(通常)什么也不做,您不应该调用它。
从我的头顶(但不要引用我的这一点-它必须有文件的某处,但我找不到它…):
然而,Windows是一个特例。虽然不能切换子窗口的透明度或将其设置为百分比,但可以在创建时使其完全透明,如ρss的答案所示。
所以,如果这就是你想要的,并且你想要尽可能的移植,你会想要这样的东西:
style = wx.TRANSPARENT_WINDOW if sys.platform.lower() == 'win32' else 0
panel1 = wx.Panel(topPanel, -1, style=style)
if panel1.CanSetTransparent:
panel1.SetTransparent(100)发布于 2015-04-29 11:20:17
是的是可能的。您可以使用窗户
示例代码:我使panel1变得透明,并将绿色赋予topPanel。这就是为什么在panel2上看到绿色的原因,因为panel1是透明的。
import wx
class MyFrame(wx.Frame):
def __init__(self, parent, id, title):
wx.Frame.__init__(self, parent, id, title,size=(250, 250))
topPanel = wx.Panel(self, -1)
topPanel.SetBackgroundColour('green')
panel1 = wx.Panel(topPanel, -1, style=wx.TRANSPARENT_WINDOW)
#panel1.SetTransparent(100)
panel2 = wx.Panel(topPanel, -1)
panel2.SetBackgroundColour('gray')
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(panel1,1,flag = wx.EXPAND|wx.ALL)
sizer.Add(panel2,1,flag = wx.EXPAND|wx.ALL)
topPanel.SetSizer(sizer)
class MyApp(wx.App):
def OnInit(self):
frame = MyFrame(None, -1, 'frame')
frame.Show(True)
return True
app = MyApp(0)
app.MainLoop()https://stackoverflow.com/questions/29941789
复制相似问题