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

GTK+ avec Python Discussion :

obtenir une couleur en format rgb


Sujet :

GTK+ avec Python

  1. #1
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    96
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mai 2006
    Messages : 96
    Par défaut [Résolu]obtenir une couleur en format rgb
    Bonjour,

    Je me prend la tête depuis 1/2 heure pour obtenir une couleur RGB (style #FF00FF) a partir d'un gtk.ColorSelectionDialog.

    J'obtiens avec ce widget une gtk.gdk.Color convertible en une chaine hexa longue de 12 caractères (méthode to_string()).

    Y-a-t il un moyen d'obtenir ce que je cherche ou faut-il faire la conversion soi-même ? (et si oui comment ?)

    merci bien !

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Par défaut
    GdkColor a l'air d'avoir des membres red, green, blue. Tu dois pouvoir créer une chaîne du type "#%02X%02X%02X", color.red, color.green, color.blue pour obtenir le résultat que tu veux (syntaxe pseudo-C)

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    96
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mai 2006
    Messages : 96
    Par défaut
    Oui mais ces membres de gdkcolor concaténés donnent la même chaine que la méthode to_string(), donc je suis bloqué.

    C'est quand même bizarre qu'il n'y ais aucune méthode ni dans gdkColor ni dans gtk.ColorSelection, pour obtenir une couleur RGB...

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Par défaut
    C'est des gint16 ces valeurs, c'est peut être pour ça que tu obtiens 12 chiffres et pas 6 (4 * 3 au lieu de 2*3)

  5. #5
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    96
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mai 2006
    Messages : 96
    Par défaut
    Ok,

    et pour la conversion, hex(val) tout simplement ?

    je vois pas trop a quoi correspond un gint(16).

  6. #6
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    96
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mai 2006
    Messages : 96
    Par défaut
    Bon finalement, j'ai opté pour une solution assez moche mais ca marche :

    recupérer le texte de l'entry dans la boite de dialogue :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
            a=gtk.ColorSelectionDialog("Selection d'une couleur")
            response=a.run()
            if response == gtk.RESPONSE_OK:
                coul = a.colorsel
                rgb= coul.get_children()[0].get_children()[1].get_children()[0].get_children()[0].get_text()
    en attendant une meilleure solution, résolu

  7. #7
    Invité de passage
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 1
    Par défaut
    Arrakis I love you !!!!!

    Cela fait 2 jours que je me prends la tete avec ça. C'est assez incroyable que les développeurs de gtk n'aient pas pensé à ça --'

    Je devais changer la couleur de texttag et impossible d'utiliser le format avec l'alpha pour ça.

    Merci du fond du coeur

  8. #8
    Modérateur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    1 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 395
    Par défaut
    Citation Envoyé par CyBeRCeD Voir le message
    Cela fait 2 jours que je me prends la tete avec ça. C'est assez incroyable que les développeurs de gtk n'aient pas pensé à ça --'
    Peut être parce que c'est assez trivial...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    >>> import gtk.gdk
    >>> color = gtk.gdk.Color (0.0, 0.5, 1.0)
    >>> color.to_string()
    '#00007fffffff'
    >>> color.green
    32767
    >>> print '%02X' % color.green
    7FFF
    >>> print '%02X' % (color.green / 256)
    7F
    >>> print '#%02X%02X%02X' % (color.red/256, color.green/256, color.blue/256)
    #007FFF
    >>> print '#%02X%02X%02X' % (color.red_float * 255, color.green_float * 255, color.blue_float * 255)
    #007FFF
    Je suis loin d'être un dieu en python, mais convertir un entier 16 bits sur 8 bits et formater une chaîne de caractères, c'est pas la mer à boire... D'autant que le seul cas d'utilisation vient des logiciels qui ne comprennent pas les échantillons sur 16 bits que renvoie to_string... J'ai aussi mis l'autre cas: utilisation des valeurs flottantes pour les encadrer dans l'intervalle 0-255.

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

Discussions similaires

  1. [VBS/VBA] Obtenir la couleur d'une cellule Excel
    Par ced600 dans le forum VBScript
    Réponses: 3
    Dernier message: 27/12/2007, 16h31
  2. Convertir une couleur RGB au format TSL
    Par bobyx dans le forum Assembleur
    Réponses: 4
    Dernier message: 19/11/2007, 01h53
  3. Clarté d'une couleur et "distance" entre les couleurs en RGB.
    Par Pragmateek dans le forum Traitement d'images
    Réponses: 7
    Dernier message: 13/09/2006, 19h33
  4. Obtenir la couleur d'un pixel d'une PictureBox
    Par avigeilpro dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 30/06/2006, 22h17
  5. Comment obtenir une couleur clignotante dans un TStringGrid ?
    Par OutOfRange dans le forum Composants VCL
    Réponses: 2
    Dernier message: 24/07/2005, 00h46

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