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 :

Une bibliotheque de graphique (plotting) maison


Sujet :

Python

  1. #21
    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,

    Question à deux centimes: Et sans le thread ?

    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
    class DynaGraph():
     
        def __init__(self):
            self.boss=Tk()
            self.boss.overrideredirect(1)
            self.boss.withdraw()
     
        def NewGraph(self, **kwargs):
            w=Toplevel()
            graph=Graph(w, **kwargs)
            graph.pack()
            return DrawGraph(self, graph)
     
        def plot(self, graph, *args):
            graph.delete_all()
            graph.plot(*args)
            graph.update()
    @+

    Edit: Code complet
    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    from graphplotlib import *
     
    class DrawGraph():
     
        def __init__(self, dg, g):
            self.dg = dg
            self.g = g
     
        def plot(self, *args):
            self.dg.plot (self.g, *args)
     
    class DynaGraph():
     
        def __init__(self):
            self.boss=Tk()
            self.boss.overrideredirect(1)
            self.boss.withdraw()
     
        def NewGraph(self, **kwargs):
            w=Toplevel()
            graph=Graph(w, **kwargs)
            graph.pack()
            return DrawGraph(self, graph)
     
        def plot(self, graph, *args):
            graph.delete_all()
            graph.plot(*args)
            graph.update()
     
    if __name__ == '__main__':
        import math
        import time
     
        v_x=[0]
        v_y=[0]
        v_y_2=[0]
     
        toto=DynaGraph()
        a=toto.NewGraph(grid=True, width=600, height=300)
        b=toto.NewGraph(grid=True, width=600, height=300)
        i=10000
        while 1:
            v_x.append(i)
            v_y_2.append(math.sin(float(i)))
            v_y.append(math.cos(float(i)))
            a.plot([v_x,v_y_2,{'fill':'blue','line':True,'point':True}])
            b.plot([v_x,v_y,{'fill':'green','line':True,'point':True,'point_color':'green'}])
            i=i+1000
            time.sleep(1)

  2. #22
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 139
    Par défaut
    Alors la je suis sans voix.
    Je pensais pas du tout que c'était faisable dans thread
    Va falloir qu'on m'explique la...

  3. #23
    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,

    Normal, le mainloop() étant bloquant on ne retrouve sur le web que des exemples avec threading pour passer outre.
    On oublis trop souvent que l'on a déjà l'instance Tk() et que le mainloop() ne sert qu'a 'regarder ce qui se passe'.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            self.boss=Tk()
            self.boss.overrideredirect(1)
            self.boss.withdraw()
    Dans le cas présent (affichage de données externes) un simple .update() permet d'afficher les toplevels et les modifications de graph.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        def NewGraph(self, **kwargs):
            w=Toplevel()
    ....
        def plot(self, graph, *args):
            graph.delete_all()
            graph.plot(*args)
            graph.update()
    En fait c'est l'update Tk qui fait tout.

    Bon code

  4. #24
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut
    Bonsoir,
    et du coup cela marche maintenant sous Mac.

    C'est vraiment nickel tout ceci. Moi qui bosse sur un module pour l'algorithmique au Lycée, je suis aux anges avec ce bout de code pour représenter des courbes cartésiennes, et quelques objets géométriques.

  5. #25
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 139
    Par défaut
    je m'en doutais mais...
    Ca fonctionne aussi sous Windows du coup!
    Merci beaucoup, je vais étudier tes méthodes magique de prés...
    et bien, yapluska améliorer tout ca pour faire exactement ce que je veux, et dés que c'est tout propre je met dans dans 'source python'
    merci beaucoup à tous!
    n'héistez pas a vous en servir, et a me poser des questions dessus

  6. #26
    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
    Bonsoir,

    Pas de quoi, ce n'est qu'une 'bidouille'.

    Juste deux choses puisque tu vas continuer ton code.

    L'import de Tkinter:
    from Tkinter import * est source à problème car trop de mots 'bateau'. Un import Tkinter ou un import Tkinter as Tk est préférable.
    Un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Try:
        import Tkinter
    except:
        import tkinter
    et la suppression des print (ou ()) permettrais d'avoir un code Python 2/3 (testé)

    Si vous voulez voir du vrais code pour éviter les threads regardez ici. J'adore le dernier code de wiztricks.

    Bon code

  7. #27
    Membre Expert
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    952
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 952
    Par défaut
    Citation Envoyé par ju_bicycle Voir le message
    dés que c'est tout propre je met dans dans 'source python'
    Cool!

  8. #28
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut
    Citation Envoyé par ju_bicycle Voir le message
    yapluska améliorer tout ca pour faire exactement ce que je veux, et dés que c'est tout propre je met dans dans 'source python'
    Tiens nous au courant ici (je suis cette discussion par mail).

Discussions similaires

  1. [JNI]récupérer un code c dans une bibliotheque dll
    Par elalia dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 29/10/2005, 13h08
  2. Réponses: 4
    Dernier message: 19/10/2005, 23h30
  3. [VBA] Copie d'une feuille (avec graphique)
    Par ed_dexia dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 06/10/2005, 09h56
  4. où trouver une bibliothèque de son
    Par etarip dans le forum Général Conception Web
    Réponses: 2
    Dernier message: 19/08/2005, 12h12
  5. Spécifier une nouvelle librairie graphique/jeu
    Par Montaigne dans le forum Développement 2D, 3D et Jeux
    Réponses: 1
    Dernier message: 20/06/2005, 18h59

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