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 :

Probleme d'affichage dans canvas en cours traitement


Sujet :

Python

  1. #1
    Membre confirmé Avatar de Thierry_V
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Août 2013
    Messages : 153
    Par défaut Probleme d'affichage dans canvas en cours traitement
    Bonjour,

    J'aimerais avoir l'affichage de ma (fenêtre+canvas avec 2scrolling) et que au fur et à mesure l'affichage de la listbox s'execute
    merci
    voici le code , donc actuellement j'ai le traitement qui s'effectue avant l'affichage du canvas et en fin de traitement tout s'affiche d'un coups.


    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
    39
    40
     
    def lecture():
     
            # --------------------------------------------------------------------------------------
            # Fenetre principale
            # --------------------------------------------------------------------------------------
            fenetre = Tk()
            fenetre.title("Informations")  
            fenetre.geometry('900x520+200+300')
            fenetre.wm_iconbitmap('icone.ico')  # icon
            fenetre.configure(bg = 'SteelBlue')
            # --------------------------------------------------------------------------------------
            # Fenetre secondaire
            # --------------------------------------------------------------------------------------
            fen_canvas = Canvas(fenetre,bg='white',borderwidth=4,relief=RIDGE,height=400,width=450)
            fen_canvas.pack(side=LEFT,expand=True,fill=BOTH)
            # --------------------------------------------------------------------------------------
            # Scrolling fenetre secondaire
            # --------------------------------------------------------------------------------------
            scrollbar = Scrollbar(fen_canvas,bg='blue',orient=VERTICAL)
            xscrollbar = Scrollbar(fen_canvas,bg='blue',orient=HORIZONTAL)
            listFic = Listbox(fen_canvas,background = 'ghost white', yscrollcommand = scrollbar.set )
            xlistFic = Listbox(fen_canvas, background = 'ghost white', xscrollcommand = scrollbar.set ) 
            scrollbar.pack( side = RIGHT, fill=Y )
            xscrollbar.pack( side = BOTTOM, fill=X )
            scrollbar.config( command = listFic.yview )
            xscrollbar.config( command = xlistFic.xview )
     
            listFic.pack( side = LEFT, fill = BOTH, ipadx=560, ipady=100, padx=30, pady=50 )
     
     
            ******* Traitement de données
     
     
            *********** affichage
            # Liste des infos
            listFic.insert(END,'affichage du traitement '+variable du traitement)
     
     
            fenetre.mainloop()

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Si votre problème est de différer un traitement, vous avez w.after(delay_ms, callback, *args).

    26. Universal widget methods

    The methods are defined below on all widgets. In the descriptions,w can be any widget of any type.

    w.after(delay_ms, callback=None, *args)

    Requests Tkinter to call function callback with arguments args after a delay of at least delay_ms milliseconds. There is no upper limit to how long it will actually take, but your callback won't be called sooner than you request, and it will be called only once.

    This method returns an integer “after identifier” that can be passed to the.after_cancel() method if you want to cancel the callback.

    If you do not pass a callback argument, this method waits delay_ms milliseconds, as in the.sleep() function of the standard Pythontime module.
    Si votre problème est d'actualiser l'affichage du canvas ou de la listbox, vous avez w.update_idletasks().

    w.update_idletasks()

    Some tasks in updating the display, such as resizing and redrawing widgets, are called idle tasks because they are usually deferred until the application has finished handling events and has gone back to the main loop to wait for new events.

    If you want to force the display to be updated before the application next idles, call the w.update_idletasks() method on any widget.
    Quoiqu'il en soit, prenez le temps d'étudier cette page : http://infohost.nmt.edu/tcc/help/pub...universal.html

    Vous y gagnerez forcément.

    Pour bien apprendre Python suis ces tutoriels et cours de formation Python : http://python.developpez.com/cours/
    Le meilleur livre Python de très loin : Apprendre à programmer avec Python 3 par Gérard Swinnen http://python.developpez.com/cours/apprendre-python3/


    @+.

  3. #3
    Membre confirmé Avatar de Thierry_V
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Août 2013
    Messages : 153
    Par défaut
    Bonjour,

    merci, c'est résolu, mais ce n'est tout de même pas normal que nous soyons obligés de forcer l'affichage
    j'ai pris : nomlistbox.update()

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Thierry_V Voir le message
    Bonjour,

    j'ai pris : nomlistbox.update()
    Bonjour,

    Il n'est franchement pas recommandé d'utiliser w.update() pour la màj d'un affichage.

    Préférez w.update_idletasks() à w.update() aussi souvent que possible :

    http://infohost.nmt.edu/tcc/help/pub...universal.html

    w.update()

    This method forces the updating of the display. It should be used only if you know what you're doing, since it can lead to unpredictable behavior or looping. It should never be called from an event callback or a function that is called from an event callback.

    w.update_idletasks()

    Some tasks in updating the display, such as resizing and redrawing widgets, are called idle tasks because they are usually deferred until the application has finished handling events and has gone back to the main loop to wait for new events.

    If you want to force the display to be updated before the application next idles, call the w.update_idletasks() method on any widget.
    merci, c'est résolu, mais ce n'est tout de même pas normal que nous soyons obligés de forcer l'affichage
    Tkinter est une librairie qui date un peu, mais elle demeure une excellente lib pour le tout-venant, pour tester diverses choses.

    @+.

  5. #5
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 681
    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 681
    Par défaut
    Salut,

    Citation Envoyé par Thierry_V Voir le message
    Bonjour,

    merci, c'est résolu, mais ce n'est tout de même pas normal que nous soyons obligés de forcer l'affichage
    j'ai pris : nomlistbox.update()
    Vous avez posé une question semblable dans ce post il y a un mois. Le contexte est un peu différent mais la cause et les réponses sont identiques.
    Avez vous pris le temps de parcourir le tuto qui était mentionné à l'époque?

    Bon courage,

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

  6. #6
    Membre confirmé Avatar de Thierry_V
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Août 2013
    Messages : 153
    Par défaut
    Bonjour,

    Oui j'ai lu, mais en utilisant la méthode de l'ancien poste, cela n'était pas top, donc je me suis dit que la raison était ailleurs.
    le lien infohost est excellent, encore merci
    j'ai du regarder l'utilisation et comprendre le callback

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 23/06/2007, 15h07
  2. probleme d'affichage dans l'explorateur de classe
    Par koyaga dans le forum Visual C++
    Réponses: 2
    Dernier message: 08/01/2007, 14h43
  3. Problème d'affichage dans un fork
    Par diefo dans le forum Linux
    Réponses: 2
    Dernier message: 13/11/2006, 06h59
  4. Probleme d'affichage dans un TAnimate
    Par blondelle dans le forum C++Builder
    Réponses: 13
    Dernier message: 26/10/2006, 15h05
  5. Probleme d'affichage dans le formulaire
    Par Pao82 dans le forum Access
    Réponses: 11
    Dernier message: 17/08/2006, 07h21

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