Faire un don ! | | style | statistiques | contactez-nous | plan | lettre d'information
aide





Programmation.autre : pygtk (ou gtk tout court)

Posté par thor_tue () le 29 avril 2008

Salut.



Je poursuis ma découverte de pygtk et je suis confronté

au problème suivant ; comment faire communiquer des widgets

entre-eux ?



Considérez l'exemple suivant, pour fixer les idées :



widget1 : une "drawingarea" dessinant un segment de droite, grâce à

la souris

widget2 : une boîte avec 4 "entry" (les coordonnées des extrémités du segment)

widget3 : un "label" affichant la longueur du segment

les widget{1,2,3} dans une fenêtre.



Illustration :



...widget1......widget2..........widget3

######################

#.............#...................#..................#

#.............#...................#..................#

#.............#.x1.=.|10|...#..................#

#.......+...#.y1.=.|20.|..#..................#

#......+....#.x2.=.|15.|..#.long.=.47.#

#.....+.....#.y2.=.|23.|..#..................#

#....+......#..................#..................#

#...+.......#..................#..................#

#.............#..................#..................#

######################



Ce que je veux :



1) lorsque l'utilisateur modifie le widget1 (w1),

les widget w2 et w3 sont mis à jour en "temps réel"

(coordonnées modifiés, long. recalculée)



2) lorsque l'utilisateur édite les "entry" de w2 alors w1 et w3

sont mis à jour en temps réel (segment redessiné, long. recalculée)



Bref, en schématisant (la flèche signifiant ordre de mise à jour) :



w1 -> w2, w1 -> w3

w2 -> w1, w2 -> w3

w3 -> aucun



Comment peut-on architecturer tout cela "sainement" ?



Faut-il créer une classe "gestionnaire de signaux" centrale, qui

à chaque widget (variable) donné associe une liste des widgets

à modifier ? Ou le simple emploi d'"EventBox" suffira ?

Bien évidemment, en pratique je vais avoir beaucoup plus

de widgets et de variables, c'est juste un exemple artificiel

pour illustrer. Je voudrais juste le PRINCIPE GÉNÉRAL à utiliser pour

ne pas m'embarquer dans une solution foireuse, les docs que j'ai

trouvées expliquent *comment* manipuler les widgets, mais parlent

peu d'organisation générale.



Merci.

> Lire le message (4 commentaires, moyenne: 1,5).  

kefir

Posté par Farvardin (page perso, ) le 29/04/2008 à 19:22. (lien). Évalué à 2.

Il existait tepache, mais le projet semble mort :
http://www.gnomefiles.org/app.php/tepache

son successeur est kefir je crois (mais cela n'a pas l'air d'avoir bougé depuis 2 ans) :

http://kefir.sourceforge.net/index.php

c'est pas mal car cela permet de relier facilement une interface créée avec Glade, et d'ajouter ton code sur les widgets qui sont ainsi repérés grâce à kefir.

Cela ne répond peut être pas vraiment à ta question, surtout sur la fin, pas cela peut peut-être aider pour la partie "comment faire communiquer des widgets entre-eux ?"

--
Tous ensemble contre l'esclavitude des logiciels privateurs !

[ Répondre ]

Vous ne pouvez plus rajouter de commentaires! (trop vieux)