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

Python Discussion :

Débutante - Python & Tkinter [Python 3.X]


Sujet :

Python

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Lycéen
    Inscrit en
    Octobre 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Octobre 2015
    Messages : 9
    Points : 1
    Points
    1
    Par défaut Débutante - Python & Tkinter
    Bonjour/Bonsoir,

    Le but de ce "programme" est d'afficher sur Tkinter un canvas formé de carrés blancs et noirs représentant les 0 et 1.

    Quand j’exécute le programme, Tkinter s'ouvre mais reste gris.
    Pouriez-vous m'indiquer où est mon erreur, si'l vous plait ?

    Je précise que je suis totalement débutante en "programmation".

    Merci d'avance.

    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
     
     
    Binaire=10000110000010011101010011100100110011110011001000001000101101011010010011010110
     
    racine = Tk()
    dessin = Canvas (racine, width=1000, height=1000)
    dessin.pack()
     
    x0=0
    y0=0
    x1=1
    y1=1
     
    for i in binaire:
        if i==1:
            dessin.create_rectangle(x0,y0,x1,y1, fill='black')
        elif i==0:
            dessin.create_rectangle(x0,y0,x1,y1, fill='white')
        y0=y0+1
        y1=y1+1

  2. #2
    Membre régulier
    Homme Profil pro
    employé
    Inscrit en
    Mars 2015
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : employé

    Informations forums :
    Inscription : Mars 2015
    Messages : 75
    Points : 103
    Points
    103
    Par défaut
    Bonjour à toi,

    Que t'indiques ton code d'erreur ?

    Après de ce que je constate tu n'importes pas tkinter via la commande: (à mettre tout en haut)
    Ensuite idéalement, t'aurais peut-être dû transformer "Binaire" en une liste de chiffre exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Binaire = [1,0,0,0,1,etc...]
    donc selon moi ton erreur vient de binaire.

    Et pour finir pour cloturer tkinter il faut toujours finir par cette petite phrase:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    racine.mainloop()#racine étant ton racine = Tk()
    Après commencer Tkinter sans apprendre les bases est un peu limite, Il te serait surement plus sympathique et simple de commencer par les bases

  3. #3
    Nouveau Candidat au Club
    Femme Profil pro
    Lycéen
    Inscrit en
    Octobre 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Octobre 2015
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Tout d'abord, merci de ta réponse.
    J'ai fait les modifications nécessaire et aucun changement .___.

    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
     
    from tkinter import *
     
    N=[1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0]
     
    racine = Tk()
    dessin = Canvas (racine, width=1000, height=1000)
    dessin.pack()
     
    x0=0
    y0=0
    x1=1
    y1=1
     
    for i in N:
        if i==1:
            dessin.create_rectangle(x0,y0,x1,y1, fill='black')
        elif i==0:
            dessin.create_rectangle(x0,y0,x1,y1, fill='white')
        y0=y0+1
        y1=y1+1
     
    racine.mainloop()
    Je n'ai pas de code d'erreur, Tinker s'ouvre mais la fenêtre reste entièrement grisée.

    Merci

  4. #4
    Membre éprouvé
    Homme Profil pro
    Aucune activité
    Inscrit en
    Novembre 2011
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Aucune activité

    Informations forums :
    Inscription : Novembre 2011
    Messages : 505
    Points : 926
    Points
    926
    Par défaut
    Citation Envoyé par Chromophobya Voir le message
    Tout d'abord, merci de ta réponse.
    J'ai fait les modifications nécessaire et aucun changement .___.

    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
     
    from tkinter import *
     
    N=[1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0]
     
    racine = Tk()
    dessin = Canvas (racine, width=1000, height=1000)
    dessin.pack()
     
    x0=0
    y0=0
    x1=1
    y1=1
     
    for i in N:
        if i==1:
            dessin.create_rectangle(x0,y0,x1,y1, fill='black')
        elif i==0:
            dessin.create_rectangle(x0,y0,x1,y1, fill='white')
        y0=y0+1
        y1=y1+1
     
    racine.mainloop()
    Je n'ai pas de code d'erreur, Tinker s'ouvre mais la fenêtre reste entièrement grisée.

    Merci
    Bonsoir,
    Il serait efficace de lire le manuel de tkinter…
    En particulier ce qui concerne les "canvas".
    En ajoutant l'option "width=0" à "create_rectangle"…
    Puis en modifiant les points de départs des carrés:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    x0=1
    y0=1
    x1=2
    y1=2
    Quelque chose sera visible… Mais il faut avoir l'œil!!!
    Sinon, en augmentant "x1" et "y1" (3?) et en augmentant un peu les progressions de "y0" et "y1" (par exemple 3 ), cela devient plus clair!

    Clodion

    PS:
    Citation Envoyé par Chromophobya Voir le message
    Je n'ai pas de code d'erreur
    Merci à papyfouette pour cela!

  5. #5
    Nouveau Candidat au Club
    Femme Profil pro
    Lycéen
    Inscrit en
    Octobre 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Octobre 2015
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Merci pour la réponse rapide !

    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
     
     
    from tkinter import *
     
    N=[1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0]
     
    racine = Tk()
    dessin = Canvas (racine, width=1000, height=1000)
    dessin.pack()
     
    x0=30
    y0=30
    x1=40
    y1=40
     
    for i in N:
        if i==1:
            dessin.create_rectangle(x0,y0,x1,y1, fill='black', width=0)
        elif i==0:
            dessin.create_rectangle(x0,y0,x1,y1, fill='white', width=0)
        y0=y0+10
        y1=y1+10
     
    racine.mainloop()
    J'ai fait les modifications, et toujours le même problème.

    Nom : Problem.png
Affichages : 130
Taille : 6,5 Ko

    J'ai essayé de regarder plusieurs tutoriels mais en vain.
    Aussi doué soit mon professeur, il n'explique pas le fonctionnement de ce qu'on utilise alors il faut y aller un peu en tâtonnant

    Encore merci.

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Vos rectangles font 1 pixel de hauteur et de largeur: essayez avec des dimensions + grandes.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Membre éprouvé
    Homme Profil pro
    Aucune activité
    Inscrit en
    Novembre 2011
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Aucune activité

    Informations forums :
    Inscription : Novembre 2011
    Messages : 505
    Points : 926
    Points
    926
    Par défaut
    Citation Envoyé par Chromophobya Voir le message
    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
     
     
    from tkinter import *
     
    N=[1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0]
     
    racine = Tk()
    dessin = Canvas (racine, width=1000, height=1000)
    dessin.pack()
     
    x0=3
    y0=3
    x1=4
    y1=4
     
    for i in N:
        if i==1:
            dessin.create_rectangle(x0,y0,x1,y1, fill='black', width=0)
        elif i==0:
            dessin.create_rectangle(x0,y0,x1,y1, fill='white', width=0)
        y0=y0+1
        y1=y1+1
     
    racine.mainloop()
    J'ai fait les modifications, et toujours le même problème.

    Bonsoir,
    Je pense qu'il serait bon d'apprendre à lire entièrement les réponses.

    Clodion

  8. #8
    Nouveau Candidat au Club
    Femme Profil pro
    Lycéen
    Inscrit en
    Octobre 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Octobre 2015
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Je pense pourtant avoir corrigé point par point les remarques proposées ...
    J'ai ajouté une largeur de 2 au contour (width=2), j'ai multiplié la largeur de mes carrés par 10 (x0=30, y0=30 x1=40 y1=40 [...] y0=y0+10, y1=y1+10).
    J'ai effectué ces modifications dans mon dernier post.

    Merci.

  9. #9
    Membre régulier
    Homme Profil pro
    employé
    Inscrit en
    Mars 2015
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : employé

    Informations forums :
    Inscription : Mars 2015
    Messages : 75
    Points : 103
    Points
    103
    Par défaut
    bah... y0 et y1 += 10 sachant que ton rectangle à 4 point 30,30,40,40... Tu comprends pas ton erreur ?

    ton second rectangle commence dans le premier, ton troisième dans le premier et second etc....
    voulant clôturer ton sujet rapidos, je te donne ma solution:

    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
    from tkinter import *
     
    fen = Tk()
     
    can = Canvas(fen)
    can.pack()
    binaire = [1,0,0,0,0,1,1,0,0,1,0,1,1,1,1,0]
     
    x,y = 10,10
    for i in binaire:
        if i == 0:
            can.create_rectangle(x-2,y-5,x+2,y+5, fill= "black")#si tu mets x-5 et x+5 ça te fera un carré pareil pour le rectangle du else
        else: # à noter que dans ta liste il n'y a que deux valeurs donc else suffit à elif. 
               #Cependant si tu mets plusieurs valeurs avec plusieurs couleurs de rectangles, des elif seront recommandé.
            can.create_rectangle(x-2,y-5,x+2,y+5, fill ="white")
        x+= 8 # de haut en bas faut mettre y+=15 (les proportions sont à ta guise)
    fen.mainloop()
    Ce qui est juste dommage, c'est de brûler les étapes et de ne pas s'instruire normalement à la pratique de Python.

    On pourra te faire 100 fois tes exercices mais si tu ne fais pas d'effort à comprend Python, le résultat sera toujours le même.

    Bonne soirée

  10. #10
    Nouveau Candidat au Club
    Femme Profil pro
    Lycéen
    Inscrit en
    Octobre 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Octobre 2015
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Merci beaucoup pour votre réponse !

    Et contrairement à ce que avez l'air de penser, je prends du temps à travailler sur Python. Et vu que j'ai commencé, il y a 3 mois, je m'efforce réellement de comprendre chaque ligne.

    Ci-dessous, voici le code originel modifié:
    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
     
    from tkinter import *
     
    N=[1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0]
     
    racine = Tk()
    dessin = Canvas (racine, width=1200, height=20)
    dessin.pack()
     
    x0=0
    y0=0
    x1=10
    y1=10
     
    for i in N:
        if i==1:
            dessin.create_rectangle(x0,y0,x1,y1, fill='black')
        elif i==0:
            dessin.create_rectangle(x0,y0,x1,y1, fill='white', width=0)
        x0=x0+10
        x1=x1+10
     
    racine.mainloop()
    Et ci-dessous, le code arrangé et amélioré par papyfouette

    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
     
    from tkinter import *
     
    N=[1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0]
     
    racine = Tk()
    dessin = Canvas (racine, width=1200, height=20)
    dessin.pack()
     
    x,y=0,0
     
    for i in N:
        if i==1:
            dessin.create_rectangle(x,y,x+15,y+15, fill='black')
        elif i==0:
            dessin.create_rectangle(x,y,x+15,y+15, fill='white')
        x+=15
     
    racine.mainloop()
    Bonne soirée

  11. #11
    Expert éminent

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

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

    Simplifions:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    N=[1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 
        1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 
        0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 
        1, 0, 1, 1, 0]
    colors = ('white', 'black')
    x = 0
    for idx, val in enumerate(N):
         dessin.create_rectangle(idx*15, 0, idx*15+15, 15, fill=colors[val])
     
    racine.mainloop()
    Mais il s'agit d'une ligne, pas d'une grille.

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

Discussions similaires

  1. Débutant: Python 2.7 ou 3 ?
    Par sreuse dans le forum Général Python
    Réponses: 2
    Dernier message: 21/12/2010, 14h08
  2. Débutant : Python et Python (x,y) ?
    Par jlg_47 dans le forum Général Python
    Réponses: 9
    Dernier message: 23/02/2010, 13h33
  3. aide pour un débutant python
    Par daniel130 dans le forum Général Python
    Réponses: 12
    Dernier message: 12/12/2009, 17h44
  4. Débutant Python, GUI : pygtk
    Par ToY.ch dans le forum GTK+ avec Python
    Réponses: 6
    Dernier message: 05/08/2007, 02h38

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