J'ai un GUI en wxpython, mais le problème que j'ai se situe plutôt dans la partie python.
Le GUI se compose de 6 images StaticBitmap que j'appelle button1...button6. Je voudrais, à l'aide des flêches du clavier, me déplacer sur ces boutons.A chaque fois que je suis sur un bouton, il change d'image. En fait, j'utilise la fonction:
buttonoff.SetBitmap(imageoff) pour le faire changer d'image. J'initialise la variable self.pos à 0 avant d'appeler la fonction par:
Code :
- self.Bind(wx.EVT_CHAR, self.OnOffButton)
|
Pour les déplacements, j'ai écrit la fonction:
Code :
- def OnOffButton(self, event):
- image_off=['image1', 'image2', 'image3', 'image4', 'image5', 'image6']
- imageleave=image_off[self.pos]
- buttonleave='button' + str(self.pos + 1)
- key = event.GetKeyCode()
- if key in (wx.WXK_LEFT, wx.WXK_RIGHT, wx.WXK_UP, wx.WXK_DOWN):
- if key == wx.WXK_LEFT:
- print "LEFT"
- if self.pos > 2:
- self.pos = self.pos - 3
- elif key == wx.WXK_RIGHT:
- print "RIGHT"
- if self.pos < 3:
- self.pos = self.pos + 3
- elif key == wx.WXK_UP:
- print "UP"
- if self.pos == 3:
- self.pos = self.pos
- elif self.pos == 0:
- self.pos = self.pos
- else:
- self.pos = self.pos - 1
- elif key == wx.WXK_DOWN:
- print "DOWN"
- if self.pos == 2:
- self.pos = self.pos
- elif self.pos == 5:
- self.pos = self.pos
- else:
- self.pos = self.pos + 1
- if key == wx.WXK_ESCAPE:
- self.OnTimeToClose()
- buttonenter='button' + str(self.pos + 1)
- imageenter=image_off[self.pos] + '_on'
- buttonleave.SetBitmap(imageleave)
- buttonenter.SetBitmap(imageenter)
- buttonleave.Refresh()
- buttonleave.Update()
- buttonenter.Refresh()
- buttonenter.Update()
- event.Skip()
- return
|
mais quand je joue le script, j'ai le message d'erreur:
Citation :
AttributeError: 'str' object has no attribute 'SetBitmap'
|
C'est comme s'il n'évaluait pas les variables buttonleave, etc ....
Quelqu'un aurait une idée ???
Message édité par usf70 le 06-05-2007 à 16:57:45