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

wxPython Discussion :

Bon design de programmation?


Sujet :

wxPython

  1. #1
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 46
    Par défaut Bon design de programmation?
    Bonjour a tous!

    Je me pose une question d'ordre d'implémentation d'un concept pourtant basique mais pour lequel je me pose quelques questions...

    le concept est simple, comment mettre à jour des composants d'une fenêtre suivant ce qui s'y passe dedans.

    C'est pas clair je pense donc je vais vous donner un exemple sur ce quoi je travaille:

    J'ai une frame avec un canvas à gauche, sur lequel je déplace des objets, je clique sur ceux-ci, etc.

    Et à droite un panel de texte montrant les propriétés des objets sur lequels j'ai cliqué et d'autres infos.


    Prenons l'exemple tout simple de: "je clique sur un objet de mon canvas, un rectangle disons et je veux que dans le panel de gauche, les champs prévus à cet effet se remplissent (position, couleur, taille par exemple)".

    j'ai identifié plusieurs façon de faire ceci, mais python étant un langage laissant extrêmement (trop peut-être...) de liberté au développeur il y a moyen de faire vraiment dans le sale et j'aimerai trouver une solution qui me satisfasse car j'aimerai coder "propre" même en utilisant python! (certains trouveront paradoxal cette phrase, à chacun son opinion..)


    • Méthode 1
      Lorsque je crée mon canvas, je lui passe en paramètre une référence vers le parent (la frame qui englobe tout donc) et lorsque je détecte un clic qui fait mouche, j'appelle une méthode du parent (updateInfo(selectedObj) par exemple).

      Je trouve pas ça génial de sauvegarder le parent dans le composant pour s'en servir, ça crée un couplage qui casse la réutilisabilité de mon canvas dans d'autres applications si jamais (c'est pas prévu mais c'est pas propre alors je n'en veux pas!)
    • Méthode 2
      Lorsque je détecte un clic sur un objet, je crée un event perso que je fire sur la frame globale, l'événement est ensuite capté et les infos mises à jour

      Ca me parait propre mais quelque peu... LOURD comme méthode!
      De plus, là ça passe parce que je n'ai qu'un canvas, mais avec une autre appli qui aurait pleins de sources d'événements lancés sur la frame principale, ca fait un sacré goulot d'étranglement!

      Alors oui il y a le choix de lancer l'événement sur autre chose que la frame principale, disons le panel directement qui s'occupera de gérer les infos mais pour cela, il faudrait que je lie ce panel à mon canvas à sa création et on retourne au problème de la méthode 1...


    J'ai encore d'autres méthodes en tête mais elles sont tellement sales que je n'ose même pas en parler...

    Donc si une âme charitable pouvait m'éclairer sur ce problème d'apparence basique mais qui pour moi reste flou malgré mes tentatives, je lui serai reconnaissant!

    Merci!

  2. #2
    Membre Expert Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Par défaut
    Salut,

    Je ne suis pas une réference en programmation mais je te conseille d'utiliser la méthode des events personnalisés, c'est plus réutilisable.

    Je ne comprends pas trop ton point de vue:
    Ca me parait propre mais quelque peu... LOURD comme méthode!
    C'est facile à mettre en oeuvre et ton code est effectivement plus propre.
    avec une autre appli qui aurait pleins de sources d'événements lancés sur la frame principale, ca fait un sacré goulot d'étranglement!
    Je me demande si ton interface ne resterais pas plus reactive en lançant des events que en appellant directement des fonctions de ton panel, a essayer.

    Pour finir, la communication par event c'est la base des l'interaction dans un GUI, donc je vote pour event personnalisé.

    Je pense que d' autre te donnerons bientôt leurs avis.

    Bon python.

    pacificator

  3. #3
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 46
    Par défaut
    Merci pour ta réponse.

    Je me suis peut-être un peu emporté sur le "lourd" pardon ^^ ce n'est pas si lourd en y réfléchissant, mais il faut tout de même créer un event, l'enregistrer, le lancer, le catcher tout ça pour appeler une simple méthode d'un conteneur de la même frame.

    Ceci-dit j'adhère pour cette méthode pour le moment faute de mieux, peut-être je vais prendre les sources d'un bon projet open source en wxpython et regarder comment ils s'y prennent en attendant les autres réponses. Quoi qu'il en soit je posterai mes trouvailles à la suite de ce post si jamais j'en fait ;-)

  4. #4
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Mai 2002
    Messages : 309
    Par défaut
    Citation Envoyé par pacificator Voir le message
    Pour finir, la communication par event c'est la base des l'interaction dans un GUI, donc je vote pour event personnalisé.
    Je suis 100% de cet avis, c'est plus propre, et c'est d'une meilleur maintenance.
    Quant au fait que se serait plus "lourd"...... c'est a voir, je pense que c'est selon le nombre d'ojets de ta frame.

  5. #5
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 21
    Par défaut
    Bonjour,

    je viens seulement de lire le mail. donc désolé pour la réponse tardive.
    J'ai eu un cas similaire sur la mise à jour d'une frame en fonction des choix utilisateurs. Le plus simple est de gérer les évènements les uns après les autres.

    Je devais mettre à jour des listes de choix en fonction des actions utilisateurs et cela sur 5 listes de choix consécutives.

    Les évènements sont très biens pour ça;

    Bonne journée
    David

Discussions similaires

  1. [Cherche] Bon designer
    Par blustic dans le forum Webdesign & Ergonomie
    Réponses: 0
    Dernier message: 04/09/2011, 13h26
  2. [Interface Homme/Machine] Qu'est-ce qu'un bon designer ?
    Par jbbres dans le forum Débats sur le développement - Le Best Of
    Réponses: 32
    Dernier message: 29/04/2009, 18h02
  3. Je cherche un bon designer CSS
    Par sylphidre dans le forum Autres
    Réponses: 0
    Dernier message: 28/08/2008, 16h22
  4. Bon design ou daube : www.planetdisgroovery.com ?
    Par Invité dans le forum Mon site
    Réponses: 18
    Dernier message: 19/06/2007, 09h45
  5. bons débuts en programmation?
    Par Xtrem_noob dans le forum C
    Réponses: 33
    Dernier message: 30/04/2006, 19h01

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