IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

wxPython Discussion :

wx.lib.masked.TimeCtrl : couleur de fond


Sujet :

wxPython

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 23
    Par défaut wx.lib.masked.TimeCtrl : couleur de fond
    bonjour,

    Je suis sous Windows. Je développe en python 2.5 à base de wxpython 2.8 pour l'interface graphique.

    Pour la saisie de l'heure, j'utilise le controle TimeCtrl de la librairie wx.lib.masked mais j'ai un soucis de rendu : la couleur de fond reste désespéremment à "blanc" et ne respecte pas ce qui est paramétré dans les propriétés de Windows...
    J'ai tenté le BackGroundColor sans aucun résultat...

    Pour info, le même problème existe dans la démo wxpython v2.8.4.0

    Quelqu'un a-t-il une idée pour aligner ce composant sur ses petits copains ?

  2. #2
    Membre Expert Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Par défaut
    Hello,

    si tu ouvre le module timectrl, tu peux y trouver:
    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
    class TimeCtrlAccessorsMixin:
        """
        Defines TimeCtrl's list of attributes having their own Get/Set functions,
        ignoring those in the base class that make no sense for a time control.
        """
        exposed_basectrl_params = (
             'defaultValue',
             'description',
     
             'useFixedWidthFont',
             'emptyBackgroundColour',
             'validBackgroundColour',
             'invalidBackgroundColour',
     
             'validFunc',
             'validRequired',
            )
        for param in exposed_basectrl_params:
            propname = param[0].upper() + param[1:]
            exec('def Set%s(self, value): self.SetCtrlParameters(%s=value)' % (propname, param))
            exec('def Get%s(self): return self.GetCtrlParameter("%s")''' % (propname, param))
     
            if param.find('Colour') != -1:
                # add non-british spellings, for backward-compatibility
                propname.replace('Colour', 'Color')
     
                exec('def Set%s(self, value): self.SetCtrlParameters(%s=value)' % (propname, param))
                exec('def Get%s(self): return self.GetCtrlParameter("%s")''' % (propname, param))
    Ce qui donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    timeCtrl.SetCtrlParameters(validBackgroundColour=wx.Colour(0, 255, 0))
    Apparemment, c'est prevu pour pouvoir faire timeCtrl.SetValidBackgroundColour ou timeCtrl.SetValidBackgroundColor, mais cela ne semble pas fonctionner ...

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 23
    Par défaut
    Effectivement, cela me permet de modifier la couleur de fond du contrôle comme je veut (joli, le vert ). Encore une fois, merci Pacificator.

    Par contre, comment lui indiquer que je veux qu'il récupère le style par défaut définit dans les propriétés Windows ? Y-a-t-il moyen de récupérer cette information automatiquement pour la passer au contrôle ?

  4. #4
    Membre Expert Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Par défaut
    Y-a-t-il moyen de récupérer cette information automatiquement pour la passer au contrôle
    Il te faudra attaquer le module win32api après avoir installé la librairie pywin32.

    Des constantes sont predefinies dans le module win32con:
    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
     
    COLOR_SCROLLBAR         0    Scroll-bar gray area
    COLOR_BACKGROUND        1    Desktop
    COLOR_ACTIVECAPTION     2    Active window caption
    COLOR_INACTIVECAPTION   3    Inactive window caption
    COLOR_MENU              4    Menu background
    COLOR_WINDOW            5    Window background
    COLOR_WINDOWFRAME       6    Window frame
    COLOR_MENUTEXT          7    Text in menus
    COLOR_WINDOWTEXT        8    Text in windows
    COLOR_CAPTIONTEXT       9    Text in caption, size box,
                                 scroll bar arrow box
    COLOR_ACTIVEBORDER      10   Active window border
    COLOR_INACTIVEBORDER    11   Inactive window border
    COLOR_APPWORKSPACE      12   Background color of multiple
                                 document interface (MDI)
                                 applications
    COLOR_HIGHLIGHT         13   Items selected item in a
                                 control
    COLOR_HIGHLIGHTTEXT     14   Text of item selected in a
                                 control
    COLOR_BTNFACE           15   Face shading on push button
    COLOR_BTNSHADOW         16   Edge shading on push button
    COLOR_GRAYTEXT          17   Grayed (disabled) text. This
                                 color is set to 0 if the
                                 current display driver does not
                                 support a solid gray color.
    COLOR_BTNTEXT           18   Text on push buttons
    De là, il te faut faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    import win32api
    print win32api.GetSysColor(win32con.COLOR_MENU)
    #en utilisant les constantes
    print win32api.GetSysColor(4)
    tu obtiens 65280 si tes fenetres ont un magnifique fond vert .

    La petite fonction qui va bien:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    def getRGB(winColor):
        b = winColor >> 16
        g = winColor >> 8 & 255
        r = winColor & 255
        return (r,g,b)
     
    print getRGB(win32api.GetSysColor(win32con.COLOR_MENU))
    En esperant que cela repond à ta question.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 23
    Par défaut Bravo !
    Bravo et merci !

    Cela fonctionne parfaitement, même si j'ai l'impression d'écraser une mouche avec une enclume

    Je vais tout de même voir pour déclarer un defect sur le site de wxpython (même si mon anglais me rejete depuis toujours). Peut-être feront-ils qque chose pour la prochaine version ?

    Et puis, je vais sans doute me pencher un peu sur ce package win32 qui m'apparaît très riche !

    Encore merci à toi !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. TDBGRID - Couleur de fond d'une seule cellule
    Par cgo dans le forum Bases de données
    Réponses: 5
    Dernier message: 11/09/2009, 10h16
  2. Couleur de fond cellule excel
    Par Grouik dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 26/07/2004, 09h43
  3. Réponses: 4
    Dernier message: 23/06/2004, 14h30
  4. debutant : couleur de fond d'une application direct3D
    Par ptidrone dans le forum DirectX
    Réponses: 2
    Dernier message: 12/06/2004, 17h08
  5. Changer la couleur de fond de l'écran
    Par tnk dans le forum x86 16-bits
    Réponses: 5
    Dernier message: 19/01/2003, 01h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo