Tu pourrais préciser un peu ? Que cherches-tu à faire exactement ?
Ce que je veux faire, c'est créer une base pour mes projets en cours. A la base une appli qu'on ouvre et avec un menu on charge des plugins qui comprennent l'interface (sous forme de panels et les menus qui correspondent) et le module applicatif qui va derriere.
Quand je voudrais créer une appli complete, je n'aurais qu'un fabriquer les panels sur boa, les modules qui vont derriere et à les inclure dans mon appli de base. Je pourrais aussi étendre les possibilitées d'une appli existante simplement en incluant un nouveau module.
J'ai actuellement un projet en cours qui consiste à créer un outil de détection des dérives qualité au cours du process de fabrication.
Je voudrais ensuite étendre ce prog, pour en faire un ERP complet.
A++
Bonjour,
Rien que de très banal. Supposons que ton appli de base soit représentée par une classe dérivée de wxFrame. Dans Boa, et si on prend les noms de fichiers sources donnés par défaut, le démarrage de l'appli se trouve dans App1.py qui contient entre autres: ... import Frame1 ... self.main = Frame1.create(None) ... application.MainLoop() ... L'import permet de charger le module; le create appelle une fonction qui crée l'objet Frame1 dérivé de wxFrame (yavait + simple, mais bon, c'est comme ça dans Boa).
Cet objet Frame1 contient tout un tas de bazar, dont : def __init__(self, parent): qui est le constructeur de la classe, donc exécuté une fois à la création de l'objet (note que là dedans, tu peux mettre absolument ce que tu veux). Dans ton cas, il suffit de mettre un import par module dans Frame1.py : ... import Dialog1 import Dialog2 import Frame2 import Frame3 import Frame4 ... et d'appeler le module lors du choix de l'utilisateur. Si c'est une wxFrame: frame = Frame2.create(self) frame.Show() Si c'est un wxDialog: dlg = Dialog1.Dialog1(self) try: dlg.ShowModal() finally: dlg.Destroy() Dans le cas de Frame2, on reproduit la même chose que dans Frame1. Dans le cas de Dialog2, la fenêtre garde forcément le focus à cause de ShowModal(). On peut faire autrement, ce ne sont que des exemples, tirés d'ailleurs de la doc (le toturiel Boa si mes souvenirs sont bons).
Avec ce système, tu peux ajouter autant de modules que tu veux dans ton appli. A+ jm
Je vien de trouver la solution, et ca marche bien je vous met ma solution pour ceux que ca pourrait interresser. les commentaires sont les bien venus
pour afficher une fenetre extérieure:
answer = 'Frame5' ## La chaine avec le nom peut alors venir d'une fenetre de texte ou d'un fichier de conf frame= __import__(answer).create(self) frame.Show() Aucun import a faire a l'avance, on ne connait pas le nom de la fentre affiché à l'avance.
pour changer le panel de mon splitterwindow:
dlg = wx.TextEntryDialog(self, 'Quel est le nom du panel', 'Caption', 'Panel5') try: if dlg.ShowModal() == wx.ID_OK: answer = dlg.GetValue() fen = getattr(__import__(answer),answer)(id=-1, name=answer, parent=self.splitterWindow1, pos=wx.Point(0, 0), size=wx.Size(272, 150), style=wx.TAB_TRAVERSAL) self.splitterWindow1.ReplaceWindow(self.panel2,fen) finally: dlg.Destroy()
J'avance dans mon projet, maintenant faut que je brode autour. :')
Désolé, mais je n'ai rien compris. Ton problème était juste de savoir
comment importer dynamiquement un module ?
Andréï wrote:
Andréï wrote:
Bonsoir,
bonsoir
Tu pourrais préciser un peu ?
Que cherches-tu à faire exactement ?
Ce que je veux faire, c'est créer une base pour mes projets en cours.
A la base une appli qu'on ouvre et avec un menu on charge des plugins
qui comprennent l'interface (sous forme de panels et les menus qui
correspondent) et le module applicatif qui va derriere.
Quand je voudrais créer une appli complete, je n'aurais qu'un
fabriquer les panels sur boa, les modules qui vont derriere et à les
inclure dans mon appli de base.
Je pourrais aussi étendre les possibilitées d'une appli existante
simplement en incluant un nouveau module.
J'ai actuellement un projet en cours qui consiste à créer un outil de
détection des dérives qualité au cours du process de fabrication.
Je voudrais ensuite étendre ce prog, pour en faire un ERP complet.
A++
Bonjour,
Rien que de très banal.
Supposons que ton appli de base soit représentée par une classe
dérivée de wxFrame. Dans Boa, et si on prend les noms de fichiers
sources donnés par défaut, le démarrage de l'appli se trouve dans
App1.py qui contient entre autres:
...
import Frame1
...
self.main = Frame1.create(None)
...
application.MainLoop()
...
L'import permet de charger le module; le create appelle une fonction
qui crée l'objet Frame1 dérivé de wxFrame (yavait + simple, mais bon,
c'est comme ça dans Boa).
Cet objet Frame1 contient tout un tas de bazar, dont :
def __init__(self, parent):
qui est le constructeur de la classe, donc exécuté une fois à la
création de l'objet (note que là dedans, tu peux mettre absolument ce
que tu veux).
Dans ton cas, il suffit de mettre un import par module dans Frame1.py :
...
import Dialog1
import Dialog2
import Frame2
import Frame3
import Frame4
...
et d'appeler le module lors du choix de l'utilisateur.
Si c'est une wxFrame:
frame = Frame2.create(self)
frame.Show()
Si c'est un wxDialog:
dlg = Dialog1.Dialog1(self)
try:
dlg.ShowModal()
finally:
dlg.Destroy()
Dans le cas de Frame2, on reproduit la même chose que dans Frame1.
Dans le cas de Dialog2, la fenêtre garde forcément le focus à cause de
ShowModal().
On peut faire autrement, ce ne sont que des exemples, tirés d'ailleurs
de la doc (le toturiel Boa si mes souvenirs sont bons).
Avec ce système, tu peux ajouter autant de modules que tu veux dans
ton appli.
A+
jm
Je vien de trouver la solution, et ca marche bien
je vous met ma solution pour ceux que ca pourrait interresser.
les commentaires sont les bien venus
pour afficher une fenetre extérieure:
answer = 'Frame5'
## La chaine avec le nom peut alors venir d'une fenetre de texte ou d'un
fichier de conf
frame= __import__(answer).create(self)
frame.Show()
Aucun import a faire a l'avance, on ne connait pas le nom de la fentre
affiché à l'avance.
pour changer le panel de mon splitterwindow:
dlg = wx.TextEntryDialog(self, 'Quel est le nom du panel',
'Caption', 'Panel5')
try:
if dlg.ShowModal() == wx.ID_OK:
answer = dlg.GetValue()
fen = getattr(__import__(answer),answer)(id=-1, name=answer,
parent=self.splitterWindow1, pos=wx.Point(0, 0),
size=wx.Size(272, 150),
style=wx.TAB_TRAVERSAL)
self.splitterWindow1.ReplaceWindow(self.panel2,fen)
finally:
dlg.Destroy()
J'avance dans mon projet, maintenant faut que je brode autour. :')
Désolé, mais je n'ai rien compris. Ton problème était juste de savoir
Tu pourrais préciser un peu ? Que cherches-tu à faire exactement ?
Ce que je veux faire, c'est créer une base pour mes projets en cours. A la base une appli qu'on ouvre et avec un menu on charge des plugins qui comprennent l'interface (sous forme de panels et les menus qui correspondent) et le module applicatif qui va derriere.
Quand je voudrais créer une appli complete, je n'aurais qu'un fabriquer les panels sur boa, les modules qui vont derriere et à les inclure dans mon appli de base. Je pourrais aussi étendre les possibilitées d'une appli existante simplement en incluant un nouveau module.
J'ai actuellement un projet en cours qui consiste à créer un outil de détection des dérives qualité au cours du process de fabrication.
Je voudrais ensuite étendre ce prog, pour en faire un ERP complet.
A++
Bonjour,
Rien que de très banal. Supposons que ton appli de base soit représentée par une classe dérivée de wxFrame. Dans Boa, et si on prend les noms de fichiers sources donnés par défaut, le démarrage de l'appli se trouve dans App1.py qui contient entre autres: ... import Frame1 ... self.main = Frame1.create(None) ... application.MainLoop() ... L'import permet de charger le module; le create appelle une fonction qui crée l'objet Frame1 dérivé de wxFrame (yavait + simple, mais bon, c'est comme ça dans Boa).
Cet objet Frame1 contient tout un tas de bazar, dont : def __init__(self, parent): qui est le constructeur de la classe, donc exécuté une fois à la création de l'objet (note que là dedans, tu peux mettre absolument ce que tu veux). Dans ton cas, il suffit de mettre un import par module dans Frame1.py : ... import Dialog1 import Dialog2 import Frame2 import Frame3 import Frame4 ... et d'appeler le module lors du choix de l'utilisateur. Si c'est une wxFrame: frame = Frame2.create(self) frame.Show() Si c'est un wxDialog: dlg = Dialog1.Dialog1(self) try: dlg.ShowModal() finally: dlg.Destroy() Dans le cas de Frame2, on reproduit la même chose que dans Frame1. Dans le cas de Dialog2, la fenêtre garde forcément le focus à cause de ShowModal(). On peut faire autrement, ce ne sont que des exemples, tirés d'ailleurs de la doc (le toturiel Boa si mes souvenirs sont bons).
Avec ce système, tu peux ajouter autant de modules que tu veux dans ton appli. A+ jm
Je vien de trouver la solution, et ca marche bien je vous met ma solution pour ceux que ca pourrait interresser. les commentaires sont les bien venus
pour afficher une fenetre extérieure:
answer = 'Frame5' ## La chaine avec le nom peut alors venir d'une fenetre de texte ou d'un fichier de conf frame= __import__(answer).create(self) frame.Show() Aucun import a faire a l'avance, on ne connait pas le nom de la fentre affiché à l'avance.
pour changer le panel de mon splitterwindow:
dlg = wx.TextEntryDialog(self, 'Quel est le nom du panel', 'Caption', 'Panel5') try: if dlg.ShowModal() == wx.ID_OK: answer = dlg.GetValue() fen = getattr(__import__(answer),answer)(id=-1, name=answer, parent=self.splitterWindow1, pos=wx.Point(0, 0), size=wx.Size(272, 150), style=wx.TAB_TRAVERSAL) self.splitterWindow1.ReplaceWindow(self.panel2,fen) finally: dlg.Destroy()
J'avance dans mon projet, maintenant faut que je brode autour. :')
Désolé, mais je n'ai rien compris. Ton problème était juste de savoir
comment importer dynamiquement un module ?
Andréï
Désolé, mais je n'ai rien compris. Ton problème était juste de savoir comment importer dynamiquement un module ?
oui, c'est le principe des plugin, non? ca marche maintenant, me reste a améliorer un petit défaut de présentation de mon splitter. Pour ca je vais créer un nouveau fil.
Désolé, mais je n'ai rien compris. Ton problème était juste de savoir comment
importer dynamiquement un module ?
oui, c'est le principe des plugin, non?
ca marche maintenant, me reste a améliorer un petit défaut de
présentation de mon splitter. Pour ca je vais créer un nouveau fil.
Désolé, mais je n'ai rien compris. Ton problème était juste de savoir comment importer dynamiquement un module ?
oui, c'est le principe des plugin, non? ca marche maintenant, me reste a améliorer un petit défaut de présentation de mon splitter. Pour ca je vais créer un nouveau fil.
jean-michel
Andréï wrote:
Désolé, mais je n'ai rien compris. Ton problème était juste de savoir comment importer dynamiquement un module ?
oui, c'est le principe des plugin, non? Peut-être, mais ça n'a rien à voir avec wx.
Pas grave. A+ jm
ca marche maintenant, me reste a améliorer un petit défaut de présentation de mon splitter. Pour ca je vais créer un nouveau fil.
Andréï wrote:
Désolé, mais je n'ai rien compris. Ton problème était juste de savoir
comment importer dynamiquement un module ?
oui, c'est le principe des plugin, non?
Peut-être, mais ça n'a rien à voir avec wx.
Pas grave.
A+
jm
ca marche maintenant, me reste a améliorer un petit défaut de
présentation de mon splitter. Pour ca je vais créer un nouveau fil.