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 :

Comment feriez-vous ? [Python 3.X]


Sujet :

Tkinter Python

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Octobre 2002
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 55
    Par défaut Comment feriez-vous ?
    Bonjour,

    J'ai fait un petit script pour "essayer" de dialoguer avec mes capteurs qui fonctionnent en modbus (je suis électronicien). Je crée autant de fenêtre qu'il y a de capteur sur mon bus de communication.

    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
    50
    51
    52
    53
    54
    55
    from tkinter import *
     
    class MaFenetre(Toplevel):
     
     
        def __init__(self, i):
            Toplevel.__init__(self)
     
     
            self.title(""+str(i))
            self.geometry("220x90")
            self.l1 = Label(self, text="ETAT")
            self.l2 = Label(self, text="ZERO")
            self.l3 = Label(self, text="SENS")
            self.l4 = Label(self, text="_DEF")
     
            self.e1 = Entry(self)
            self.e2 = Entry(self)
            self.e3 = Entry(self)
            self.e4 = Entry(self)
     
            self.l5 = Label(self, text="------")
            self.l6 = Label(self, text="------")
            self.l7 = Label(self, text="------")
            self.l8 = Label(self, text="------")
     
            self.l1.grid(row=0, column=0)
            self.l2.grid(row=1, column=0)
            self.l3.grid(row=2, column=0)
            self.l4.grid(row=3, column=0)
     
            self.e1.grid(row=0, column=1)
            self.e2.grid(row=1, column=1)
            self.e3.grid(row=2, column=1)
            self.e4.grid(row=3, column=1)
     
            self.l5.grid(row=0, column=2)
            self.l6.grid(row=1, column=2)
            self.l7.grid(row=2, column=2)
            self.l8.grid(row=3, column=2)
     
     
     
    def fenetres():
        for i in range(5):
            ma_fenetre = MaFenetre(i)
     
     
     
     
    fen = Tk(className="scan")
    fenetres()
     
     
    fen.mainloop()
    Ce qui me donne ceci :
    Nom : fen.PNG
Affichages : 278
Taille : 98,9 Ko

    C'est ici que je souhaiterai avoir vos conseils : J'aimerai que chaque fenêtre interroge en boucle son capteur. Quand je parle d'interrogation je veux dire envoyer sur le port COM la commande lecture d'un registre dans la mémoire du capteur.
    par exemple :
    ETAT = 0x9003
    ZERO = 0.003
    SENS = 0.810
    _DEF = 0x0000

    Voilà je ne sais pas trop comment commencer ?

    Merci d'avance

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

    Citation Envoyé par Patrick PETIT Voir le message
    Voilà je ne sais pas trop comment commencer ?
    Il faut déjà écrire une fonction qui récupère les informations d'un capteur (en paramètre) de sorte à arriver à écrire une boucle comme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for c in capteurs:
         infos = lire_capteur(c)
         print(infos)
    puis associer chaque capteur à sa fenêtre de sorte à savoir mettre à jour l'affichage des fenêtres via:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for c in capteurs:
         infos = lire_capteur(c)
         mettre_a_jour(fenetres[c], infos
    Puis on ordonnance les lectures mise à jours via .after (éventuellement pour chaque capteur plutôt que pour leur ensemble).

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

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Octobre 2002
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 55
    Par défaut
    Bonjour,

    Merci d'avoir répondu.

    J'ai ajouté des paramètres à mon objet
    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
    class MaFenetre(Toplevel):
     
     
        def __init__(self, i, mot_etat, mesure_zero, mesure_sens, mot_defaut):
     
            self.mot_etat = mot_etat
            self.mesure_zero = mesure_zero
            self.mesure_sens = mesure_sens
            self.mot_defaut = mot_defaut
     
            Toplevel.__init__(self)
     
            self.title(""+str(i))
            self.geometry("220x90")
            self.l1 = Label(self, text="ETAT")
            self.l2 = Label(self, text="ZERO")
            self.l3 = Label(self, text="SENS")
            self.l4 = Label(self, text="_DEF")
     
            self.e1 = Entry(self)
            self.e2 = Entry(self)
            self.e3 = Entry(self)
            self.e4 = Entry(self)
     
            self.l5 = Label(self, text="------")
            self.l6 = Label(self, text="------")
            self.l7 = Label(self, text="------")
            self.l8 = Label(self, text="------")
     
            self.l1.grid(row=0, column=0)
            self.l2.grid(row=1, column=0)
            self.l3.grid(row=2, column=0)
            self.l4.grid(row=3, column=0)
     
            self.e1.grid(row=0, column=1)
            self.e2.grid(row=1, column=1)
            self.e3.grid(row=2, column=1)
            self.e4.grid(row=3, column=1)
     
            self.l5.grid(row=0, column=2)
            self.l6.grid(row=1, column=2)
            self.l7.grid(row=2, column=2)
            self.l8.grid(row=3, column=2)
     
            self.e1.insert(0,str(hex(mot_etat)))
            self.e2.insert(0,str(mesure_zero))
            self.e3.insert(0,str(mesure_sens))
            self.e4.insert(0,str(hex(mot_defaut)))
    et je suis arrivé à cette boucle en suivant vos conseils (j'ai fixé volontairement à 4 fenêtres)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    def fenetres():
        for num in range(4):
           instrument = minimalmodbus.Instrument('COM1', 32+num, mode='rtu')
           etat = instrument.read_register(16384, 0)
           defaut = instrument.read_register(16385, 0)
           ma_fenetre = MaFenetre(num,etat,0,0,defaut)
           time.sleep(0.2)
    Maintenant chaque donnée des mes capteurs se retrouvent dans leurs fenêtres respective.
    Par contre je ne vois pas comment faire la mise à jour de mes fenêtres !? Comment se servir de .after sans re-créer d'autres fenêtres ?

    Merci d'avance

    ps : je programme sur microcontroleur et j'avoue que quand on passe sur PC en POO c'est plus le même monde

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

    Citation Envoyé par Patrick PETIT Voir le message
    Par contre je ne vois pas comment faire la mise à jour de mes fenêtres !? Comment se servir de .after sans re-créer d'autres fenêtres ?
    Créer des widgets et les mettre à jour suite à une action de l'utilisateur ou ordonnancé par after... Dans tous les tutos. vous trouver les bases de la mécanique avec de exemples comme:

    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
    import tkinter as tk
     
    root = tk.Tk()
     
    labels = []
    for i in range(2):
        for j in range(2):
            label = tk.Label(root, text=' ', width=5)
            label.grid(row=j, column=i)
            labels.append(label)
     
    def animate(count, delay=500):
        for i, w in enumerate(labels):
            w['text'] = (i+1) * count
        if count > 0:
            root.after(delay, animate, count-1)
     
    animate(10)
    tk.mainloop()
    Si vous ne maîtrisez pas ce genre de mécanique, pas facile de la composer avec des objets plus compliqués.... mais c'est pour vous apprendre ces bases là qu'existent les tutos.

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

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Octobre 2002
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 55
    Par défaut
    Bonsoir,

    Je m'étais mal exprimé dans le post précédant, en faite je ne trouvais pas comment agir sur mes objets (mes fenêtres) mais c'est après avoir réfléchi que je me suis dit : "forcement si je ne stock nul part mes fenêtres j'aurais du mal à faire des mises à jour dessus"

    Après avoir mis mes objets dans une liste j'ai pu faire des mise à jour avec des .after

    J'ai fait un essai de mise à jour sur une seul fenêtre avec un time juste pour comprendre la mécanique.


    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
    fen = Tk(className="scan") 
     
    liste = []
     
    for i in range(5): 
        ma_fenetre = MaFenetre(i)
        liste.append(ma_fenetre)
     
    def maj():
        heure = time.time()
        liste[0].e3.insert(1,"tt")
        liste[0].after(1000,maj)
     
    heure
    maj()
     
     
    fen.mainloop()
    Je posterais le script complet lundi et je mettrais le post en RESOLU.
    Je vous remercie d'avoir pris le temps de m'aider, le plus drôle c'est quand je relis le script je me dis : c'était tellement simple en faite ... (quand quelqu'un te guide )

    Juste une dernière chose (j'accepte d'être envoyé sur les roses car j'ai pas cherché) : Connaissez-vous une astuces pour organiser mes fenêtres (toplevel) lors de leurs création ? Sur Linux elles sont en cascade et sous windows elles sont l'une au dessus de l'autre.

    Merci et bonne soirée

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

    Citation Envoyé par Patrick PETIT Voir le message
    Connaissez-vous une astuces pour organiser mes fenêtres (toplevel) lors de leurs création ?
    Pour placer une fenêtre sur l'écran à se fait avec .geometry...
    Mais il serait peut être plus astucieux de remplacer vos fenêtres (Toplevel) par des Frame et de les positionner via .grid (dans une seule fenêtre).

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

  7. #7
    Membre confirmé
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Octobre 2002
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 55
    Par défaut
    Bonjour,

    Voici comme convenu mon script à l'instant T au cas ou il pourrait servir à quelqu'un. Je n'ai pas encore implémenté la gestion des erreurs

    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
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    """
    Created on Tue Feb  5 11:41:34 2019
     
    @author: A7XZBZZ
    """
     
    from tkinter import *
    import serial
    import minimalmodbus
    import time
     
    instrument = minimalmodbus.Instrument('COM1', 32, mode='rtu')
    instrument.serial.baudrate = 9600
    instrument.serial.bytesize = 8
    instrument.serial.parity = serial.PARITY_NONE
     
    com = serial.Serial("COM2",38400,timeout=2,rtscts=True)
    com.write("*RST;*CLS\n".encode('utf-8'))
     
     
     
    class MaFenetre(Toplevel):
     
     
        def __init__(self, i):
     
     
     
            Toplevel.__init__(self)
     
            self.title(""+str(i))
            self.geometry("220x90")
            self.l1 = Label(self, text="ETAT")
            self.l2 = Label(self, text="ZERO")
            self.l3 = Label(self, text="SENS")
            self.l4 = Label(self, text="_DEF")
     
            self.e1 = Entry(self)
            self.e2 = Entry(self)
            self.e3 = Entry(self)
            self.e4 = Entry(self)
     
            self.l5 = Label(self, text="------")
            self.l6 = Label(self, text="------")
            self.l7 = Label(self, text="------")
            self.l8 = Label(self, text="------")
     
            self.l1.grid(row=0, column=0)
            self.l2.grid(row=1, column=0)
            self.l3.grid(row=2, column=0)
            self.l4.grid(row=3, column=0)
     
            self.e1.grid(row=0, column=1)
            self.e2.grid(row=1, column=1)
            self.e3.grid(row=2, column=1)
            self.e4.grid(row=3, column=1)
     
            self.l5.grid(row=0, column=2)
            self.l6.grid(row=1, column=2)
            self.l7.grid(row=2, column=2)
            self.l8.grid(row=3, column=2)
     
     
     
    fen = Tk(className="scan")
     
    liste_des_fenetres=[]
    liste_voies_mesures=[]
     
     
    for num in range(4):
        ma_fenetre = MaFenetre(num)
        liste_des_fenetres.append(ma_fenetre)
     
     
     
    def maj():
        for num in range(4):
            instrument = minimalmodbus.Instrument('COM1', 32+num, mode='rtu')
            etat = instrument.read_register(16384, 0)
            defaut = instrument.read_register(16385, 0)
     
            organigramme = etat & 0b0000000011110000
     
     
     
            if organigramme == 0: #mesure normal
                liste_des_fenetres[num].e1.delete(0,7)
                liste_des_fenetres[num].e4.delete(0,7)
                liste_des_fenetres[num].e1.insert(0,str(hex(etat)))
                liste_des_fenetres[num].l5.config(text="Mesure", fg='black', bg='green')
                liste_des_fenetres[num].e4.insert(0,str(hex(defaut)))
     
            if organigramme == 16: #en stabilisation
                liste_des_fenetres[num].e1.delete(0,7)
                liste_des_fenetres[num].e4.delete(0,7)
                liste_des_fenetres[num].e1.insert(0,str(hex(etat)))
                liste_des_fenetres[num].l5.config(text="En stab", fg='black', bg='yellow')
                liste_des_fenetres[num].e4.insert(0,str(hex(defaut)))
     
            if organigramme == 32: #debut calibraion init du zero
                liste_des_fenetres[num].e1.delete(0,7)
                liste_des_fenetres[num].e2.delete(0,30)
                liste_des_fenetres[num].e4.delete(0,7)
                liste_des_fenetres[num].e1.insert(0,str(hex(etat)))
                liste_des_fenetres[num].l5.config(text="Init Zero", bg='red')
                #com.write(("MEAS:VOLT:DC? 1,0.001,(@"+str(num+101)+")\r\n").encode('utf-8'))
                #time.sleep(0.3)
                #buffer = com.in_waiting
                #zero = com.read(buffer)
                #liste_des_fenetres[num].e2.insert(0,float(zero))
                liste_des_fenetres[num].e4.insert(0,str(hex(defaut)))
     
            """
            com.write(("MEAS:VOLT:DC? 1,0.001,(@"+str(num+101)+")\r\n").encode('utf-8'))
            time.sleep(0.3)
            buffer = com.in_waiting
            zero = com.read(buffer)
            liste_des_fenetres[num].e1.delete(0,7)
            liste_des_fenetres[num].e2.delete(0,30)
            liste_des_fenetres[num].e3.delete(0,30)
            liste_des_fenetres[num].e4.delete(0,7)
            liste_des_fenetres[num].e1.insert(0,str(hex(etat)))
            liste_des_fenetres[num].e2.insert(0,float(zero))
            liste_des_fenetres[num].e3.insert(0,float(zero))
            liste_des_fenetres[num].e4.insert(0,str(hex(defaut)))
            """
     
     
        liste_des_fenetres[num].after(500,maj)
     
     
     
    maj()
     
    fen.mainloop()
    Dans ce script j'ai mis en commentaire tous ce qui concerne la dialogue avec la centrale de mesure AGILENT 34970A (les mesures génèrent un bruit très agaçant à la longue et comme je débug souvent ...)
    Pour résumer ce script crée autant de fenêtre qu'il y a de capteur sur mon réseau modbus, ensuite grâce à la fonction maj() j'interroge les registres ETAT et DEFAUT de chaque capteurs.
    Je test le mot d'etat en boucle avec un masque (ET logique) car seul le deuxième octet m'intéresse : il peut changer lorsque l'opérateur décide de lancer le mode calibration. (dommage que le switch case n'existe pas en python)
    Si c'est le mode calibration qui est détecté alors je lance la mesure du signal analogique de mon capteur.

    Voilà ! Et maintenant, toujours sur vos conseils et avec une semaine de recule, je crois que je vais modifier mon script pour passer par des FRAME + grid au lieu des Toplevel, ce sera plus simple pour moi.

    Je mets le sujet en RESOLU. Encore merci et ce jusqu'à ma prochaine interrogation

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

    Citation Envoyé par Patrick PETIT Voir le message
    (dommage que le switch case n'existe pas en python)
    Parce que vous voulez coder des choses un peu compliquées sans avoir appris les trucs simples qui vous simplifieraient bien la vie.
    Prenez une classe (pour vous "fenêtre") avec des méthodes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >>> class A:
    ...     def f0(self):
    ...         print('f0')
    ...     def f1(self):
    ...         print('f1')
    ...
    si on doit appeler f0 si 'A' et f1 si 'B', on peut associer cela via un dictionnaire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    >>> dd = {'A':A.f0, 'B':A.f1}
    notez que dans ce cas, A.f0 est une simple fonction et donc lui passer une instance en 1er argument:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >>> a = A()
    >>> dd['A'](a)
    f0
    >>> dd['B'](a)
    f1
    >>>
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  9. #9
    Membre confirmé
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Octobre 2002
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 55
    Par défaut
    whaou

    Ca revient à ce que je disais au début du topic, habituellement je programme bas niveau sur microcontrôleur et la POO est assez nouveau pour moi.
    Mais je vais persévérer.

    Merci pour l'astuce.

    Bonne fin de journée.

  10. #10
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 897
    Par défaut
    Voilà ! Et maintenant, toujours sur vos conseils et avec une semaine de recule, je crois que je vais modifier mon script pour passer par des FRAME + grid au lieu des Toplevel, ce sera plus simple pour moi.
    N'hésitez pas à utiliser les boucles pour vous évitez les redondances de lignes de code.

    Et effectivement, créer une Frame, et à l'aide d'une boucle, en fabriquer plusieurs me semble être une bonne idée. Votre code peut arriver à une quarantaine de lignes à peu près avec beaucoup plus de lisibilité, ça vaut le coup de s'y mettre !

    Bon courage pour la suite,

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

Discussions similaires

  1. Comment feriez-vous un éditeur texte avec metadonnées
    Par slanbuas dans le forum Général Java
    Réponses: 1
    Dernier message: 07/07/2008, 00h25
  2. Comment feriez-vous? conception d' une base de données.
    Par Patrick25300 dans le forum Schéma
    Réponses: 4
    Dernier message: 05/05/2008, 18h41
  3. [SQL] Comment feriez-vous cette requête pour une recherche ?
    Par Core8 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 06/02/2008, 11h58
  4. [D7] Comment feriez-vous une messagerie instantanée façon MSN ?
    Par ero-sennin dans le forum Web & réseau
    Réponses: 37
    Dernier message: 09/08/2007, 20h53
  5. [Debug] Comment feriez-vous ?
    Par mandaillou dans le forum C++
    Réponses: 4
    Dernier message: 21/03/2007, 17h07

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