3

編集: (少し変更 -> 2 番目の問題) BitmapButton と TextCtrl を作成しました。このボタンの画像は、TextCtrl に特定のテキストが入力されると変化します。これは機能します:

def create(self,event):
    self.textinput = wx.TextCtrl(self.panel, pos=(100,20))
    self.picture = wx.Image("pics\\default.bmp", wx.BITMAP_TYPE_BMP).ConvertToBitmap()
    self.picturebutton = wx.BitmapButton(self.panel,-1,self.picture,pos=(100,50))
    self.textinput.Bind(wx.EVT_CHAR, self.changepic)

def changepic(self,event):
    if self.textinput.GetValue = 'test':
        self.picturebutton.Destroy()
        self.picture = wx.Image("pics\\new.bmp", wx.BITMAP_TYPE_BMP).ConvertToBitmap()
        self.picturebutton = wx.BitmapButton(self.panel,-1,self.picture,pos=(100,50))
    event.Skip()

1.) このボタンを破棄して再構築する代わりに、別の方法があることを願っています。私は試した

self.picturebutton.Refresh()

self.picturebutton.Update()

それ以外の

    self.picturebutton.Destroy()
    self.picturebutton=wx.BitmapButton(self.panel,-1,self.picture,pos=(100,50))

しかし、何も起こりませんでした。私に何ができる?

2.) 最初に「changepic」が呼び出さ次にTextCtrl が char を受け取るようです。「test」と入力すると、別のキーを押すまで何も起こらないためです。なので、例えば「testa」と入力すると絵が変わります。ただし、「test」が TextCtrl にある場合は変更されます。どうすればこれを解決できますか? 最初に文字を TextCtrl に入れてから関数呼び出すTextCtrl-Event はありますか?

4

2 に答える 2

0

Yoriz の self.Refresh() の使用は素晴らしかったが、私は使用しなければならなかった

self.picturebutton.SetBitmapLabel(self.picture)

それよりも

self.picturebutton.SetBitmap(self.picture)

それを機能させるために。SetBitmap有効な wx.BitmapButton メソッドではないようです。(パイソン2.7)

于 2013-12-20T21:32:38.800 に答える