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 :

manipulation d'un objet


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2011
    Messages
    297
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 297
    Par défaut manipulation d'un objet
    Bonjour
    j'ai un champ nom avec un bouton
    j'aimerais créer une classe qui permet de déclarer un objet avec un getter et setter et des fonctions (ajouter nom , modifier , supprimer etc)
    l'idée c'est à chaque fois que je saisie un nome via le champ de saisi et que je clique sur le bouton j'ajoute ce nom dans l'objet pour pouvoir lister l'ensemble des noms les modifier et les supprimer
    merci d'avance

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2009
    Messages : 27
    Par défaut
    je ne sais pas si j'ai bien compris, mais voila le bout de code que j'ai écris qui a l'aire de faire ce que vous demandez, je l'ai fait avec la librairie tkinter, je ne sait pas si c'est celle que vous employez


    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
    from Tkinter import*
     
    class traitement_donnee():
        def __init__(self):
            self.liste=["les valeurs\n"]
     
        def enregistre(self, event):
            valeur=text.get()##recuperer les valeurs 
            self.liste.append(valeur+"\n")##ajouter ces valeurs a la liste (+ un saut a la ligne)
            donnees.configure(text="".join(self.liste))##ecrire ces donnees
     
    traitement=traitement_donnee()##appelle la classe
     
    fen=Tk()##defini la fenetre
    text=Entry(fen, width=40)## cree la zone pour entrer les donnes avec les dimensions de celle-ci
    text.pack()##placer cette zone
     
    donnees=Label(fen, text="".join(traitement.liste))##cree une zone de texte pour afficher les donnees
    donnees.pack()##placer cette zone
     
    bouton=Button(fen, text='bouton')## cree le bouton
    bouton.pack()##placer le bouton
    bouton.bind('<Button-1>', traitement.enregistre)##definnir l'action du bouton
     
    fen.mainloop()

  3. #3
    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
    Je pense que nancy maman parle des décorateurs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    class Foo(object):
        @property
        def x(self):
            return self._x
     
        @x.setter
        def x(self, value):
            self._x = value
     
        @x.deleter
        def x(self):
            del self._x
    Cependant les méthodes d'une liste me semble largement suffisantes et correspondre à la demande.

    Maintenant si on a vraiment besoin d'une classe plutôt que d'une liste une valeur par défaut fais l'affaire.

    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
    class Foo(object):
        def __init__(self, L=[]):
            self.L = L
     
        def append(self, n):
            if n not in self.L:
                self.L.append(n)
     
        def delete(self, n):
            if n in self.L:
                self.L.remove(n)
     
        def change(self, n, new):
            if n in self.L:
                self.L.insert(self.L.index(n), new)
                self.L.remove(n)
     
        def get(self):
            return self.L
     
        def raz(self):
            del(self.L[:])
     
    f = Foo()
    f.append('tutu')
    f.append('toto')
    f.append('titi')
    print(f.get())
    f.change('toto', 'otot')
    print(f.get())
     
    newf = Foo()
    print(newf.get())
     
    newf.raz()
    print(f.get())
    La question est dans ce sens nancy maman ?

    @+

    Petit edit : if not

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2011
    Messages
    297
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 297
    Par défaut
    je ne travaille pas avec Tkinter , je développe avec PyQt
    ce que j'essaie de faire c plutôt proche de ce que PauseKawa a proposé
    je vais tester votre code en l'adaptant à mon travail pour vérifier si cava marcher ou pas .
    je vous tiendrai au courant si ça passe

  5. #5
    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,

    J'ai fais une recherche de @property sur le forum et si vous vous décidez à y jeter un œil dans le cadre de votre question la réponse que vous a déjà donner wiztricks est bon début.

    @+

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

    La prochaine étape sera sans doute de mettre en correspondance la classe avec la table d'une BDD et de mettre en correspondance attributs et "forms" affichées... qui ne sont pas trop compliqués à construire en Python mais ils reposent sur de la programmation "avancée" et beaucoup de travail par dessus.

    Peut être gagneriez vous du temps à regardez ce que sait déjà faire un framework tel que camelot - qui est construit sur PyQt -.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 18/05/2010, 12h11
  2. Manipulation d'un objet JSON
    Par ordiminnie dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 21/09/2009, 16h48
  3. Problèmes dans la manipulation de l'objet "axes"
    Par Bloodista dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 08/06/2009, 18h00
  4. Manipulation de l'objet Form
    Par atom41 dans le forum VBA Access
    Réponses: 5
    Dernier message: 18/01/2008, 20h23
  5. Manipulation d'un Objet OLE Excel ?
    Par NiKro75 dans le forum VBA Access
    Réponses: 10
    Dernier message: 05/07/2004, 17h43

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