在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设置透明度。在
这是特定于平台的,哪些windows可以透明,哪些不能透明。在
^{} 方法允许您检查是否可以在运行时切换窗口的透明度。如果它返回false,
SetTransparent
将(通常)什么也不做,您不应该调用它。在在我的脑海里(但不要引用我的话,它必须在某个地方记录下来,但我找不到它…):
然而,Windows是一个特例。虽然不能切换子窗口的透明度,或将其设置为百分比,但可以在创建时使其完全透明,如ρss's answer所示。在
所以,如果这就是你想要的,并且你想尽可能的便携,你会想要这样的东西:
是的。您可以使用style=wx.TRANSPARENT_WINDOW
示例代码:我使
panel1
透明,并为topPanel
赋予绿色。这就是为什么在panel2
顶部看到绿色,因为panel1
是透明的。在相关问题 更多 >
编程相关推荐