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 :

procédure graphique avec tkinter


Sujet :

Tkinter Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2013
    Messages : 6
    Points : 2
    Points
    2
    Par défaut procédure graphique avec tkinter
    bonjour
    je n'ai pas l'habitude de programmer des GUI donc j'ai du mal à comprendre la façon dont s'exécute les instruction (pour le moment je programme de façon procédural et pas en POO)
    j'ai exécuté le programme suivant:

    from tkinter import *
    def demarer():
    global x,d
    for i in range (100):
    x=x+d
    can.coords(balle,x-10,y-10,x+10,y+10) (ligne 1)
    print(x) (ligne 2)
    if x>395 or x<5:
    d=-d

    x=100;y=100;d=10
    fen=Tk()
    can=Canvas(fen,bg='grey',height=400,width=400)
    can.pack(side=TOP)
    bouton=Button(fen,text=' ',command=demarer)
    bouton.pack()
    balle=can.create_oval(x-10,y-10,x+10,y+10,width=2,fill='red')

    pour moi ce programme devrait, lorque l'on click sur 'bouton', appeler la fonction 'demarer' , entrer dans la boucle, exécuter la ligne 1 ce qui devrait déplacer la balle de 10 pixel et recommencer jusqu'100. la balle devrait donc se déplacer.
    Or quand j'exécute le programme, la ligne 2 s'exécute normalement(on voit les nombre aller de 1 a100) mais la balle reste immobile. Ce n'est que lorsque la boucle est fini que la balle disparait puis réapparait à sa position finale.
    J'ai alors mis la ligne 1 à l"extérieur de la boucle et j'observe exactement la même chose.
    quelqu'un pourrait il m'expliquer la raison de ceci
    en vous remerciant

  2. #2
    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
    Bonjour,
    Ce serait bien (plus lisible) d'insérer le code entre les balises "#" (en haut à droite de la fenêtre de messages).

    Pour de plus amples renseignements je vous renvoie au livre de G. Swinenn (P. 230) cet exemple est traité!

    Sinon, il faut aussi que l'affichage soit mis à jour!!

    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
    from tkinter import *
     
    def demarer():
        global x,d
        for i in range (100):
            x=x+d
            can.coords(balle,x-10,y-10,x+10,y+10)
            if x>395 or x<5:
                d=-d
            can.update()    # Mise à jour de l'affichage du Canvas
    #        can.after(5)    # Pour aller plus lentement
     
    x=100;y=100;d=10
    fen=Tk()
    can=Canvas(fen,bg='grey',height=400,width=400)
    can.pack(side=TOP)
    bouton=Button(fen,text=' ',command=demarer)
    bouton.pack()
    balle=can.create_oval(x-10,y-10,x+10,y+10,width=2,fill='red')
     
    fen.mainloop()
    PS: "x=100;y=100;d=10" peut s'écrire "x, y, d = 100, 100, 10 ou sur deux lignes: x = y = 100 puis d = 10

    (Mais il y sans doutes d'autres manières de faire!!!)
    Clodion

  3. #3
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2013
    Messages : 6
    Points : 2
    Points
    2
    Par défaut la méthode update
    bonjour
    merci pour votre réponse rapide, c'est exactement ce que je voulais.
    par contre j'ai regardé à la page 230 du Swinnen mais je n'ai rien trouvé.
    A la page 103 il traite effectivement d'un problème similaire mais il utilise la récursivité ce que je veux éviter (pour le moment).
    je n'ai pas trouver d'explication, dans son livre, sur la méthode update (non plus sur internet en tout cas des réponses qui me satisfassent).
    pourquoi doit t-on rafraichir l'affichage?
    A chaque fois que l'on utilise une boucle pour modifier les caractéristiques d'un objet faut-il ajouter la méthode update?

    en vous remerciant

  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
    Bonsoir,
    Citation Envoyé par dveissi Voir le message
    par contre j'ai regardé à la page 230 du Swinnen mais je n'ai rien trouvé.
    A la page 103 il traite effectivement d'un problème similaire mais il utilise la récursivité ce que je veux éviter (pour le moment).
    Oui… Autant pour moi… C'est à la page 108, chapitre 8, du livre "Apprendre à programmer avec Python 3" de G. Swinnen.

    Effectivement, c'est dans la partie récursivité.

    Citation Envoyé par dveissi Voir le message
    je n'ai pas trouver d'explication, dans son livre, sur la méthode update (non plus sur internet en tout cas des réponses qui me satisfassent).
    pourquoi doit t-on rafraichir l'affichage?
    A chaque fois que l'on utilise une boucle pour modifier les caractéristiques d'un objet faut-il ajouter la méthode update?
    Les seules réponses que j'ai sont peu explicites:
    tcl
    Developpez
    Et ici…

    Donc voilà…
    J'espère que cela sera suffisant!!

    Clodion

  5. #5
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2013
    Messages : 6
    Points : 2
    Points
    2
    Par défaut des recherches en perspectives
    je vous remercie pour vos réponses, je vais étudier tous ça tranquilement

Discussions similaires

  1. Interface graphique avec python et tkinter
    Par MrTGR57 dans le forum Tkinter
    Réponses: 0
    Dernier message: 23/04/2014, 17h10
  2. Procédure stockée avec param de sortie:marchepas av ADO
    Par Fabby69 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 14/10/2004, 12h04
  3. [Free Pascal] Graphique avec Dev-Pascal
    Par CompuTux dans le forum Free Pascal
    Réponses: 15
    Dernier message: 03/09/2004, 02h15
  4. Caractéristique des Graphiques avec Tchart
    Par bidson dans le forum XMLRAD
    Réponses: 5
    Dernier message: 19/01/2004, 11h01
  5. faire des graphiques avec Perl
    Par And_the_problem_is dans le forum Modules
    Réponses: 2
    Dernier message: 16/07/2003, 16h08

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