2012-03-16 40 views
2

どのようにして、デフォルトの白DC背景を非表示(透明)にすることができますか?wxPython、DC背景を透明にするには?

次の例を実行すると、ボタンの上に白い背景が表示されます。私はDCの白い背景を削除したいと思います。あなたは窓の上にある場合は、単に上記参照

import wx 


class drawover(wx.Window): 
    def __init__(self, parent): 
     wx.Window.__init__(self, parent) 


     self.Bind(wx.EVT_PAINT, self.OnPaint) 
     self.Bind(wx.EVT_ERASE_BACKGROUND, self.OnErase) 
     self.Bind(wx.EVT_SET_FOCUS, self.OnFocus) 


    def OnFocus(self, evt): 
     self.GetParent().SetFocus() 


    def OnErase(self, evt): 
     pass 


    def OnPaint(self, evt): 
     dc = wx.PaintDC(self) 
     dc.BeginDrawing() 
     dc.SetPen(wx.Pen("RED", 1)) 
     dc.DrawLineList([(0,0,100,100), (100,0,0,100)]) 
     dc.EndDrawing() 


class frame(wx.Frame): 
    def __init__(self): 
     wx.Frame.__init__(self, None, size=(600,600)) 


     s = wx.BoxSizer(wx.VERTICAL) 


     self.tc1 = wx.TextCtrl(self, style=wx.TE_MULTILINE) 
     s.Add(self.tc1, 1, wx.EXPAND) 
     self.tc2 = wx.Button(self) 
     s.Add(self.tc2, 1, wx.EXPAND) 


     self.d = drawover(self.tc2) 


     self.tc2.Bind(wx.EVT_SIZE, self.OnSize2) 


     self.SetSizer(s) 
     self.Layout() 


    def OnSize2(self, evt): 
     self.d.SetSize((101,101)) 


if __name__ == '__main__': 
    a = wx.App(0) 
    b = frame() 
    b.Show(1) 
    a.MainLoop() 

答えて