bonjour,

Mon environnement:
Debian Wheezy , wxPython 2.8 et python 2.7 .

Je cherche à réaliser une saisie de chiffres et seulement des chiffres (ça c'est bon) et aussi qu'ils aient, chacun une couler différente lors de cet saisie (là c'est en friche)

Je vous joins ce code :

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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
 
# !/usr/bin/python
# coding: utf-8
 
import wx
 
class Nbres(wx.Frame):
 
    def __init__(self, parent, titre):
        super(Nbres, self).__init__(parent, title=titre, size=(400, 100))
 
        self.dys_color=['RED','GREEN','BLUE']
        self.InitUi()
        self.Centre()
        self.Show()
 
 
    def InitUi(self):
 
        self.panel = wx.Panel(self, -1) 
        self.font = wx.SystemSettings_GetFont(wx.SYS_SYSTEM_FONT)
        self.font.SetPointSize(21)
        self.nbre = 0
        #
        #-- le sizer final
        self.vbox = wx.BoxSizer(wx.VERTICAL)
 
        #
        #-- le premier.
        self.hbox_1 = wx.BoxSizer(wx.HORIZONTAL)
        #
        self.stat_texte = wx.StaticText(self.panel, label = "Premier nombre  ")
        self.stat_texte.SetFont(self.font)
        #
        self.hbox_1.Add(self.stat_texte, 0,flag = wx.LEFT, border = 8)
        self.le_nombre = wx.TextCtrl(self.panel,-1, "" ,style= wx.TE_RICH)
        self.le_nombre.SetFont(self.font)
        self.le_nombre.Bind(wx.EVT_CHAR, self.onCharEvent)
        self.hbox_1.Add(self.le_nombre, 1)
 
        # -- dans la boite
        #
        self.vbox.Add(self.hbox_1)
        #
        # boutons pour accord ou modifications
        #
        #  boite horizontale , puis les trois boutons    
        #
        self.hbox_3 = wx.BoxSizer(wx.HORIZONTAL)
        #
        self.sizer_btn = wx.GridSizer(1, 3)
        #
        self.btn1 = wx.Button(self.panel, label="A l'operation")
        self.btn2 = wx.Button(self.panel, label='Corriger')
        self.btn3 = wx.Button(self.panel, label='Quitter')
        #
        self.btn1.Bind(wx.EVT_BUTTON, self.Operation)
        self.btn2.Bind(wx.EVT_BUTTON, self.Corriger)
        self.btn3.Bind(wx.EVT_BUTTON, self.Je_quitte)
        #
        # emboiter
        self.sizer_btn.AddMany([self.btn1, self.btn2, self.btn3])
        self.hbox_3.Add(self.sizer_btn, 0, wx.ALL, 10)
        #
        self.vbox.Add(self.hbox_3)
 
 
        self.panel.SetSizer(self.vbox)
 
 
    def onCharEvent(self, event):       # voir wx.KeyEvent
 
        keycode = event.GetKeyCode()
        if keycode in range(48, 58):
            self.nbre = self.nbre + 1
            # car trois couleurs
            if self.nbre == 3:
                #
                #pour repartir à la première
                #
                self.nbre = 0
            self.le_nombre.SetForegroundColour(self.dys_color[self.nbre-1])  
            # tous les chiffres de la même couleur
            #
            # en remplaçant la ligne  précédente par celle-ci
            #self.le_nombre.SetStyle(self.nbre - 1, self.nbre, wx.TextAttr(self.dys_color[self.nbre -1]))
            # les chiffres ne changnet pas de couleur..
            #
            print self.nbre 
            event.Skip()
 
    def Operation(self , event):
		print self.le_nombre.GetValue()
 
    def Je_quitte(self, event):
		print('Bye')
		self.Destroy()
 
    def Corriger(self, event):
		self.le_nombre.SetValue('')
 
 
 
if __name__ == '__main__':
    app = wx.PySimpleApp()
    Nbres(None, "nombre")
    app.MainLoop()
La ligne 82 fait que tous les chiffres prennent la même couleur.
Après recherches j'ai testé (ligne 86) SetStyle, attente déçue, tout reste noir..

Je met cette bouée à l'eau et attends vos commentaires, suggestions et /ou propositions.

NB: la taille et la succession des couleurs permettent une meilleure lecture pour un enfant "dyslexique,dypraxique ..."
Pancrace