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 :

représentation graphique ralentie


Sujet :

Tkinter Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 14
    Par défaut représentation graphique ralentie
    Bonjour
    C'est mon premier message dans ce forum et la question que je pose me semble bien simple dans ce forum de professionnels.
    J'ai déjà programmé en "quick-basic" et je voudrais reprendre mes programmes dans le langage python(3.2)
    J'en suis aujourd'hui à quelques heures d'apprentissage et je m'exerce sur la base d'exemples pour l'instant
    Je bute sur la représentation graphique d'une fonction que je souhaiterais ralentir point par point; j'ai bien essayé la fonction "sleep" mais l'IDEL me retourne: "'sleep' is not defined"
    En fichier joint l'ébauche du programme en question.
    Merci de me faire savoir si je ne me trompe pas de forum.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 068
    Par défaut
    c'est time.sleep(0.5), mais rien ne se passe ...

  3. #3
    Expert confirmé

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Salut,

    Il y a erreur sur les données des cercles, je pense que c'est plutôt ceci que tu veux :

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    # -*- coding:Utf8 -*-
     
    # Exercice utilisant la bibliothèque graphique Tkinter
     
    from Tkinter import *
    import time, threading
    def cercle(r, coul ='black'):
        "tracé d'un cercle de centre (x,y) et de rayon r"
        can.create_oval(300-r, 300-r, 300+r, 300+r, outline=coul)
     
    def figure_1():
     
        "dessiner une cible"
        x=50
        # Effacer d'abord tout dessin préexistant :
        can.delete(ALL)
        # tracer les deux lignes (vert. et horiz.) :
        can.create_line(300, 0, 300, 600, fill ='blue')
        can.create_line(0, 300, 600, 300, fill ='blue')
        # tracer plusieurs cercles concentriques :
        rayon = 15
        while rayon < 290:
              rayon += 15
              cercle(rayon)
              time.sleep(0.5) 
     
     
    ##### Programme principal : ############
     
    fen = Tk()
    can = Canvas(fen, width =600, height =600, bg ='ivory')
    can.pack(side =TOP, padx =5, pady =5)
    b1 = Button(fen, text ='dessin 1', command =figure_1)
    b1.pack(side =LEFT, padx =3, pady =3)
    #b2 = Button(fen, text ='dessin 2', command =figure_2)
    #b2.pack(side =RIGHT, padx =3, pady =3)
    fen.mainloop()
    Ensuite, comme le dit Josmiley, rien n'apparaît avant la fin complète du tracé.
    Il n'y a pas une fonction d'update pour le forcer à rafraichir le canvas sans attendre d'être revenu dans la boucle principale ? C'est le cas avec Qt par exemple.


    (J'utilise import Tkinter because python 2.x)

  4. #4
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Bonjour,

    Citation Envoyé par VinsS Voir le message
    Ensuite, comme le dit Josmiley, rien n'apparaît avant la fin complète du tracé.
    Il n'y a pas une fonction d'update pour le forcer à rafraichir le canvas sans attendre d'être revenu dans la boucle principale ? C'est le cas avec Qt par exemple.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        while rayon < 290:
              rayon += 15
              cercle(rayon)
              can.update()
              time.sleep(0.5)
    Il est aussi préférable d'utiliser .after(), while + time.sleep c'est drôlement bloquant.

    @+

Discussions similaires

  1. représentation graphique avec ACCESS
    Par emma333 dans le forum Access
    Réponses: 2
    Dernier message: 02/03/2006, 11h27
  2. [ODBC] Affichage (représentation) graphique d'une base
    Par Atchoum_002 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 19/09/2005, 15h34
  3. Représentation graphique
    Par libititi dans le forum Composants VCL
    Réponses: 5
    Dernier message: 31/05/2005, 11h05
  4. [conseil logiciel] Représentation graphique d'une BDD
    Par ShinJava dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 27/02/2005, 08h41

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