背景のないサブクラスを作ろうとしwx.StaticText
ています。背景のアルファコンポーネントをSetBackgroundColor
で設定したり、運が悪かったさまざまなオブジェクトで使用SetTransparent
したりしましたが、それは私が初心者だからかもしれません:)
とにかく、私はサブクラス化して、背景がペイントされないようにメソッドwx.StaticText
を変更し、この新しいメソッドにバインドすることになりました。OnPaint
EVT_PAINT
ほとんどの場合(アプリケーションが起動したとき、または別のウィンドウに隠された後に再描画されたとき)は非常にうまく機能しSetLabel
ますが、のサブクラスのインスタンスでメソッドを使用するときはいつでも、呼び出されるStaticText
のは私のメソッドではありません。OnPaint
ウィンドウを更新すると、デフォルトの灰色の背景になります。
以下は「小さな」実用的な例です。最初に背景のないテキストを表示し、1.5秒待ってから、テキストのラベルを変更します。これにより、背景もペイントされます(自家製のペイントメソッドとは呼ばれません)。
import wx,time
class MyStaticText(wx.StaticText):
def __init__(self,parent,id,label,
pos=wx.DefaultPosition,
size=wx.DefaultSize,
style=0):
wx.StaticText.__init__(self,parent,id,label,pos,size,style)
self.Bind(wx.EVT_PAINT,self.OnPaint)
def OnPaint(self,event):
dc = wx.PaintDC(self)
dc.DrawText('Test 3', 40, 0)
class MyFrame(wx.Frame):
def __init__(self,width=150,height=80):
wx.Frame.__init__(self, None, size=(width, height))
self.test_text = MyStaticText(self, -1, 'Test 1',
size=wx.Size(width, height))
self.Show()
self.Timer = wx.Timer(self,-1)
self.Timer.Start(1500)
self.Bind(wx.EVT_TIMER,self.OnTimer)
def OnTimer(self,event):
self.test_text.SetLabel('Test 2')
app = wx.App()
MyFrame()
app.MainLoop()
私は何かが足りないと思いますが、wxpythonについての私の理解は何を理解するのに十分ではありません。誰かが私を教えてくれれば幸いです:)そしてwxpythonで背景のないテキストを作成するもっと簡単な方法があれば、それも素晴らしいでしょう。
前もって感謝します!