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:
Pour les déplacements, j'ai écrit la fonction:
Code : Sélectionner tout - Visualiser dans une fenêtre à part self.Bind(wx.EVT_CHAR, self.OnOffButton)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 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:
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 ???
Partager