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

Tkinter Python Discussion :

Insérer une liste de donnée dans un canvas


Sujet :

Tkinter Python

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Mai 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mai 2013
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Insérer une liste de donnée dans un canvas
    Bonjour! Je suis en Terminale S, option ISN, j'apprend donc à programmer en python Et actuellement je travaille sur le "projet", pour l'épreuve du bac mais je rencontre un petit soucis et j'aurai besoin de votre aide

    En fait j'essaye d'intégrer une image à un canvas à partir de la liste de pixels de cette image mais le problème c'est qu'une fois le programme lancé, il apparait un carré noir aux dimensions de l'image, impossible d'afficher l'image ... J'ai déjà testé la fonction .create_image mais ça ne fonctionne pas non plus et je préférerais garder cette solution avec la liste de données.

    Voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    	x = 800
            y = 600
    	w= x/3
    	z= y/4
            im= Image.open(nomImage+".png")
    	donnee= list(im.getdata())
    	larg, haut= im.size
    	for i in range (0,larg):
    		a= hex(donnee[i])
    		for j in range(0,haut):
     
    			Canevas.create_line(w+i, z+j, w+i+1, z+j+1,fill= "#" +a+a+a)
    Merci d'avance pour votre aide!

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 302
    Points : 6 782
    Points
    6 782
    Par défaut
    Salut,

    Drôle d'idée de faire comme ça, mais c'est toi qui choisis.

    Ton itération ne me semble pas bonne, tu dois d'abord aligner une rangée puis passer à la suivante, or tu fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    	for i in range (0,larg):
    larg est le nombre de colonnes, c'est haut, le nombre de rangées que tu dois utiliser.
    Pareil plus loin, utiliser larg au lieu de haut.

    Ensuite pour la conversion des données en hex, si tu avais fait un print donnee[0] tu aurais vu le problème.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    donnee= list(im.getdata())
    print donnee[0], hex(donnee[0])
     
    -----------------------------------------
     
    (255, 254, 255)
    Traceback (most recent call last):
      File "tournoi2.py", line 73, in <module>
        print donnee[0], hex(donnee[0])
    TypeError: hex() argument can't be converted to hex
    la donnée est un tuple donc la conversion échoue. Il faut convertir les trois composantes séparément.

    Par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     ... fill = "#" + ''.join([str(hex(x)) for x in donnee[i]]).replace('0x', '')

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Mai 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mai 2013
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par VinsS Voir le message
    Salut,

    Drôle d'idée de faire comme ça, mais c'est toi qui choisis.

    Ton itération ne me semble pas bonne, tu dois d'abord aligner une rangée puis passer à la suivante, or tu fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    	for i in range (0,larg):
    larg est le nombre de colonnes, c'est haut, le nombre de rangées que tu dois utiliser.
    Pareil plus loin, utiliser larg au lieu de haut.

    Ensuite pour la conversion des données en hex, si tu avais fait un print donnee[0] tu aurais vu le problème.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    donnee= list(im.getdata())
    print donnee[0], hex(donnee[0])
     
    -----------------------------------------
     
    (255, 254, 255)
    Traceback (most recent call last):
      File "tournoi2.py", line 73, in <module>
        print donnee[0], hex(donnee[0])
    TypeError: hex() argument can't be converted to hex
    la donnée est un tuple donc la conversion échoue. Il faut convertir les trois composantes séparément.

    Par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     ... fill = "#" + ''.join([str(hex(x)) for x in donnee[i]]).replace('0x', '')

    Merci de ta réponse! En fait pour larg et haut, c'est 2 fois la même valeur, puisque c'est un QR Code que j'essaie d'intégrer au canvas ...
    Je comprend pas, ton instruction ne marche pas, ça me sort: 'int' object is not iterable

    Désolé, je suis débutant et j'y comprend pas grand chose ...

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 302
    Points : 6 782
    Points
    6 782
    Par défaut
    Faudrait montrer le traceback complet de l'erreur.

    De toutes façons fais un print donnee[0] pour voir ce qu'il en sort, mon exemple est fait avec une image RGB.

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Mai 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mai 2013
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par VinsS Voir le message
    Faudrait montrer le traceback complet de l'erreur.

    De toutes façons fais un print donnee[0] pour voir ce qu'il en sort, mon exemple est fait avec une image RGB.
    le QR Code est une image niveau de gris (format L je crois) donc j'ai qu'une seule valeur à chaque fois pour donnee[i] ...

    Je crois avoir compris mon probleme, c'est que je balaye j fois la ligne (ou la colonne) 0 ...

Discussions similaires

  1. Insérer une image sans extension dans un canvas
    Par flow10000 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 28/03/2013, 10h19
  2. Réponses: 0
    Dernier message: 06/07/2011, 18h25
  3. Réponses: 5
    Dernier message: 28/05/2010, 19h12
  4. insérer une liste de valeurs dans une colonne
    Par ecdxml dans le forum SQL
    Réponses: 7
    Dernier message: 16/10/2009, 15h57
  5. Insérer une feuille de données dans un formulaire
    Par kiwell dans le forum VBA Word
    Réponses: 8
    Dernier message: 03/06/2008, 09h54

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