Dee*_*epa 3 python wxpython python-2.7
在 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()
Run Code Online (Sandbox Code Playgroud)
假设我想为 panel1 设置透明度。
对的,这是可能的。您可以使用style=wx.TRANSPARENT_WINDOW
示例代码:我将其设为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()
Run Code Online (Sandbox Code Playgroud)
哪些窗口可以透明,哪些不能透明,这是特定于平台的。
\n\n该CanSetTransparent方法允许您检查窗口的透明度是否可以在运行时切换。如果它返回 false,SetTransparent将(通常)不执行任何操作,并且您不应该调用它。
从我的脑海中浮现出来(但不要在这个\xe2\x80\x94上引用我,它必须记录在某处,但我找不到它\xe2\x80\xa6):
\n\n然而,Windows 是一个特例。虽然您无法切换子窗口的透明度,或将其设置为百分比,但您可以在创建时使其完全透明,如\xcf\x81ss\ 的答案所示所示。
\n\n因此,如果这就是您正在寻找的,并且您想要尽可能便携地做到这一点,那么您将需要这样的东西:
\n\nstyle = wx.TRANSPARENT_WINDOW if sys.platform.lower() == \'win32\' else 0\npanel1 = wx.Panel(topPanel, -1, style=style)\nif panel1.CanSetTransparent:\n panel1.SetTransparent(100)\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
7702 次 |
| 最近记录: |