Salut à tous !
EDIT 1 : Avant tout, je pense que c'est le bon forum, le problème n'étant pas l'interface graphique en elle même, mais plutôt l'écriture orienté objet de cette application, et certainement un problème d'héritage.
Voilà, je me lance dans ma première grosse application à proprement parler.
En la codant, je voudrais séparer un minimum l'interface graphique (wxPython) et les fonctions...
Mais pour le moment, le choix de la GUI n'a pas trop d'importance, on pourrais autant le faire avec Tkinter, GTK...
J'aimerais diviser ça en deux classe, une pour l'interface graphique, l'autre pour les actions.
Mon problème est de faire communiquer les deux!
Je vais donner un exemple "Hello World !" :
Je sais, c'est un peu ambigu, mais je ne vois pas comment faire autrement.
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 class GUI (): def __init__ (self): self.testUn = "Hello World !" self.bonjours() print self.testUn def bonjours (self): # --> Appel ici de l'autre classe (Test), en particulier la fonction fonctionTest. class Test (): def __init__ (self): pass def fonctionTest (self) # --> Récupération et affichage de self.testUn de la classe GUI # --> Modification de self.TestUn (self.testUn = "Coucou !") test = GUI()
En fait, mon programme en question, est un script pour supprimer les .DS_Store et les Thumb.db que Windows et Mac OS créent sur les clés USB...
Et quand l'utilisateur va clique sur "Rechercher", "Supprimer"... La GUI doit appeler les fonctions de l'autre classe (recherche, supprimer...), sachant que cette dernière dois pouvoir lire et modifier des variables (récupérer le path pour la recherche...), widgets (ajouter les éléments trouvés à une liste...), etc... De la première classe qui gère la GUI.
Je me dis que les gros programme doivent être séparé, la GUI d'un coté, et les fonctions du "core" de l'autre.
J'ai essayer de regarder un "gros" programme en wxPython, pour voir comment c'est foutu dedans, mais en vain!
Je pense qu'il s'agit de l'héritage.
Mais je n'arrive pas à me représenter un tel schéma.
J'en reviens donc à vous...
Avez vous une idée de comment faire cette "chose?
Merci d'avance de m'éclairer !
PS : Si vous avez besoin de plus de prècision, je peux essayer de vous en donner, mais c'est un peu flou pour moi aussi!
EDIT 2 : Petit exemple en plus, pour faire plus clair...
(Aucun rapport avec ce que je veux faire, maise la technique est la même !)
Imaginons une fenêtre...
2 widgets :
- Champ de texte (valeur de départ --> 0).
- Bouton "Go !"
On clique sur le bouton, ça lance une méthode de la classe "core", qui fait une boucle jusqu'à 1000. A chaque passage de la boucle, la méthode doit modifier le champs de texte (qui est dans l'autre classe) et doit prendre la valeur actuel de la boucle.
Partager