PHWinfo banniere

Titres
PORTAIL ANNUAIRE ARTICLES COMPARATEUR HÉBERGEURS DEVIS FORUMS RÉDUCTEUR D'URL
Précédent   PHWinfo > Autres forums > Forum Programmation & Conception > fr.comp.lang.python > wxPython
S'inscrire FAQ Membres Recherche Messages du jour Marquer les forums comme lus
wxPython

Réponse
 
LinkBack Outils de la discussion
Vieux 16/10/2007, 14h03   #1
BH
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut wxPython

Bonjour,

Est-ce que quelqu'un a une idée comment passer des paramètres entre les
pages d'un wizard ? Dans l'exemple de wizard
http://wiki.wxpython.org/wxWizard que j'ai repris, les classes pages
sont instanciées à la création du wizard et je ne sait donc pas comment
passer des paramètres en faisant "suivant" et "précédent"

Merci pour votre aide.
  Réponse avec citation
Vieux 16/10/2007, 14h43   #2
jean-michel bain-cornu
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: wxPython

Bonjour,
> Est-ce que quelqu'un a une idée comment passer des paramètres entre les
> pages d'un wizard ? Dans l'exemple de wizard
> http://wiki.wxpython.org/wxWizard que j'ai repris, les classes pages
> sont instanciées à la création du wizard et je ne sait donc pas comment
> passer des paramètres en faisant "suivant" et "précédent"


Tu as un événement wiz.EVT_WIZARD_PAGE_CHANGING qui te préviens du
changement de page.
Tu connais le n° de page avec evt.GetPage(), ce qui te permet de savoir
la page où tu es. Après, c'est le système habituel : tu te gardes des
paramètres dans ton objet principal que tu fais évoluer (ou pas) d'une
page à l'autre. Normalement, tu connais les objets métier qui sont dans
les pages, car c'est toi qui les a mis.
Si tu veux t'opposer au changement de page, tu utilises evt.Veto().
De plus, je crois me souvenir que l'exemple de la démo est assez complet.
J'espère que ça réponds à ta question, ce qui n'est pas sûr, car l'idée
de 'passer des paramètres entre les pages' ne me semble pas vraiment
appropriée pour ce que j'imagine que tu veux faire.

Une astuce supplémentaire (c'est mon jour de bonté) : tu peux changer
les textes des boutons standards avec le code suivant :
def OnWizPageChanged(self, evt):
texts= ('&Next >','&Cancel','< &Back','&Finish')
for o in self.wizard.GetChildren():
if 'Button' in str(type(o)):
text= o.GetLabel()
if text in texts:
o.SetLabel('nouveau label...')

A+
jm
  Réponse avec citation
Vieux 16/10/2007, 14h43   #3
jean-michel bain-cornu
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: wxPython

Bonjour,
> Est-ce que quelqu'un a une idée comment passer des paramètres entre les
> pages d'un wizard ? Dans l'exemple de wizard
> http://wiki.wxpython.org/wxWizard que j'ai repris, les classes pages
> sont instanciées à la création du wizard et je ne sait donc pas comment
> passer des paramètres en faisant "suivant" et "précédent"


Tu as un événement wiz.EVT_WIZARD_PAGE_CHANGING qui te préviens du
changement de page.
Tu connais le n° de page avec evt.GetPage(), ce qui te permet de savoir
la page où tu es. Après, c'est le système habituel : tu te gardes des
paramètres dans ton objet principal que tu fais évoluer (ou pas) d'une
page à l'autre. Normalement, tu connais les objets métier qui sont dans
les pages, car c'est toi qui les a mis.
Si tu veux t'opposer au changement de page, tu utilises evt.Veto().
De plus, je crois me souvenir que l'exemple de la démo est assez complet.
J'espère que ça réponds à ta question, ce qui n'est pas sûr, car l'idée
de 'passer des paramètres entre les pages' ne me semble pas vraiment
appropriée pour ce que j'imagine que tu veux faire.

Une astuce supplémentaire (c'est mon jour de bonté) : tu peux changer
les textes des boutons standards avec le code suivant :
def OnWizPageChanged(self, evt):
texts= ('&Next >','&Cancel','< &Back','&Finish')
for o in self.wizard.GetChildren():
if 'Button' in str(type(o)):
text= o.GetLabel()
if text in texts:
o.SetLabel('nouveau label...')

A+
jm
  Réponse avec citation
Vieux 16/10/2007, 15h09   #4
BH
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: wxPython

jean-michel bain-cornu a écrit :
> Bonjour,
>> Est-ce que quelqu'un a une idée comment passer des paramètres entre
>> les pages d'un wizard ? Dans l'exemple de wizard
>> http://wiki.wxpython.org/wxWizard que j'ai repris, les classes pages
>> sont instanciées à la création du wizard et je ne sait donc pas
>> comment passer des paramètres en faisant "suivant" et "précédent"

>
> Tu as un événement wiz.EVT_WIZARD_PAGE_CHANGING qui te préviens du
> changement de page.
> Tu connais le n° de page avec evt.GetPage(), ce qui te permet de savoir
> la page où tu es. Après, c'est le système habituel : tu te gardes des
> paramètres dans ton objet principal que tu fais évoluer (ou pas) d'une
> page à l'autre. Normalement, tu connais les objets métier qui sont dans
> les pages, car c'est toi qui les a mis.
> Si tu veux t'opposer au changement de page, tu utilises evt.Veto().
> De plus, je crois me souvenir que l'exemple de la démo est assez complet.
> J'espère que ça réponds à ta question, ce qui n'est pas sûr, car l'idée
> de 'passer des paramètres entre les pages' ne me semble pas vraiment
> appropriée pour ce que j'imagine que tu veux faire.
>
> Une astuce supplémentaire (c'est mon jour de bonté) : tu peux changer
> les textes des boutons standards avec le code suivant :
> def OnWizPageChanged(self, evt):
> texts= ('&Next >','&Cancel','< &Back','&Finish')
> for o in self.wizard.GetChildren():
> if 'Button' in str(type(o)):
> text= o.GetLabel()
> if text in texts:
> o.SetLabel('nouveau label...')
>
> A+
> jm


Merci beaucoup, cela m'a éclaircis les idées. Je vais faire quelques
esssais.

A+

Bertrand
  Réponse avec citation
Vieux 16/10/2007, 15h09   #5
BH
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: wxPython

jean-michel bain-cornu a écrit :
> Bonjour,
>> Est-ce que quelqu'un a une idée comment passer des paramètres entre
>> les pages d'un wizard ? Dans l'exemple de wizard
>> http://wiki.wxpython.org/wxWizard que j'ai repris, les classes pages
>> sont instanciées à la création du wizard et je ne sait donc pas
>> comment passer des paramètres en faisant "suivant" et "précédent"

>
> Tu as un événement wiz.EVT_WIZARD_PAGE_CHANGING qui te préviens du
> changement de page.
> Tu connais le n° de page avec evt.GetPage(), ce qui te permet de savoir
> la page où tu es. Après, c'est le système habituel : tu te gardes des
> paramètres dans ton objet principal que tu fais évoluer (ou pas) d'une
> page à l'autre. Normalement, tu connais les objets métier qui sont dans
> les pages, car c'est toi qui les a mis.
> Si tu veux t'opposer au changement de page, tu utilises evt.Veto().
> De plus, je crois me souvenir que l'exemple de la démo est assez complet.
> J'espère que ça réponds à ta question, ce qui n'est pas sûr, car l'idée
> de 'passer des paramètres entre les pages' ne me semble pas vraiment
> appropriée pour ce que j'imagine que tu veux faire.
>
> Une astuce supplémentaire (c'est mon jour de bonté) : tu peux changer
> les textes des boutons standards avec le code suivant :
> def OnWizPageChanged(self, evt):
> texts= ('&Next >','&Cancel','< &Back','&Finish')
> for o in self.wizard.GetChildren():
> if 'Button' in str(type(o)):
> text= o.GetLabel()
> if text in texts:
> o.SetLabel('nouveau label...')
>
> A+
> jm


Merci beaucoup, cela m'a éclaircis les idées. Je vais faire quelques
esssais.

A+

Bertrand
  Réponse avec citation
Vieux 16/10/2007, 15h30   #6
BH
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: wxPython

jean-michel bain-cornu a écrit :
> Bonjour,
>> Est-ce que quelqu'un a une idée comment passer des paramètres entre
>> les pages d'un wizard ? Dans l'exemple de wizard
>> http://wiki.wxpython.org/wxWizard que j'ai repris, les classes pages
>> sont instanciées à la création du wizard et je ne sait donc pas
>> comment passer des paramètres en faisant "suivant" et "précédent"

>
> Tu as un événement wiz.EVT_WIZARD_PAGE_CHANGING qui te préviens du
> changement de page.
> Tu connais le n° de page avec evt.GetPage(), ce qui te permet de savoir
> la page où tu es. Après, c'est le système habituel : tu te gardes des
> paramètres dans ton objet principal que tu fais évoluer (ou pas) d'une
> page à l'autre. Normalement, tu connais les objets métier qui sont dans
> les pages, car c'est toi qui les a mis.
> Si tu veux t'opposer au changement de page, tu utilises evt.Veto().
> De plus, je crois me souvenir que l'exemple de la démo est assez complet.
> J'espère que ça réponds à ta question, ce qui n'est pas sûr, car l'idée
> de 'passer des paramètres entre les pages' ne me semble pas vraiment
> appropriée pour ce que j'imagine que tu veux faire.
>
> Une astuce supplémentaire (c'est mon jour de bonté) : tu peux changer
> les textes des boutons standards avec le code suivant :
> def OnWizPageChanged(self, evt):
> texts= ('&Next >','&Cancel','< &Back','&Finish')
> for o in self.wizard.GetChildren():
> if 'Button' in str(type(o)):
> text= o.GetLabel()
> if text in texts:
> o.SetLabel('nouveau label...')
>
> A+
> jm

En fait j'avais déplacé les gestionnaires d'événements à un endroit où
ils n'étaient jamais appelés. Maintenant ça marche. C'est effectivement
mon objet principal qui gère le passage de paramètres. Mes pages ne font
que les faire évoluer.

Merci encore pour tout

Bertrand
  Réponse avec citation
Vieux 16/10/2007, 15h30   #7
BH
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: wxPython

jean-michel bain-cornu a écrit :
> Bonjour,
>> Est-ce que quelqu'un a une idée comment passer des paramètres entre
>> les pages d'un wizard ? Dans l'exemple de wizard
>> http://wiki.wxpython.org/wxWizard que j'ai repris, les classes pages
>> sont instanciées à la création du wizard et je ne sait donc pas
>> comment passer des paramètres en faisant "suivant" et "précédent"

>
> Tu as un événement wiz.EVT_WIZARD_PAGE_CHANGING qui te préviens du
> changement de page.
> Tu connais le n° de page avec evt.GetPage(), ce qui te permet de savoir
> la page où tu es. Après, c'est le système habituel : tu te gardes des
> paramètres dans ton objet principal que tu fais évoluer (ou pas) d'une
> page à l'autre. Normalement, tu connais les objets métier qui sont dans
> les pages, car c'est toi qui les a mis.
> Si tu veux t'opposer au changement de page, tu utilises evt.Veto().
> De plus, je crois me souvenir que l'exemple de la démo est assez complet.
> J'espère que ça réponds à ta question, ce qui n'est pas sûr, car l'idée
> de 'passer des paramètres entre les pages' ne me semble pas vraiment
> appropriée pour ce que j'imagine que tu veux faire.
>
> Une astuce supplémentaire (c'est mon jour de bonté) : tu peux changer
> les textes des boutons standards avec le code suivant :
> def OnWizPageChanged(self, evt):
> texts= ('&Next >','&Cancel','< &Back','&Finish')
> for o in self.wizard.GetChildren():
> if 'Button' in str(type(o)):
> text= o.GetLabel()
> if text in texts:
> o.SetLabel('nouveau label...')
>
> A+
> jm

En fait j'avais déplacé les gestionnaires d'événements à un endroit où
ils n'étaient jamais appelés. Maintenant ça marche. C'est effectivement
mon objet principal qui gère le passage de paramètres. Mes pages ne font
que les faire évoluer.

Merci encore pour tout

Bertrand
  Réponse avec citation
Vieux 16/10/2007, 22h09   #8
Amaury Forgeot d'Arc
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: wxPython

jean-michel bain-cornu a écrit :
> Une astuce supplémentaire (c'est mon jour de bonté) : tu peux changer
> les textes des boutons standards avec le code suivant :
> def OnWizPageChanged(self, evt):
> texts= ('&Next >','&Cancel','< &Back','&Finish')
> for o in self.wizard.GetChildren():
> if 'Button' in str(type(o)):
> text= o.GetLabel()
> if text in texts:
> o.SetLabel('nouveau label...')


Je trouve plus joli de l'écrire ainsi:

def OnWizPageChanged(self, evt):
self.wizard.FindWindow(wx.ID_FORWARD ).SetLabel('En avant!')
self.wizard.FindWindow(wx.ID_BACKWARD).SetLabel('E n arrière!')
self.wizard.FindWindow(wx.ID_CANCEL ).SetLabel('Quitter')

--
Amaury
  Réponse avec citation
Vieux 16/10/2007, 22h09   #9
Amaury Forgeot d'Arc
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: wxPython

jean-michel bain-cornu a écrit :
> Une astuce supplémentaire (c'est mon jour de bonté) : tu peux changer
> les textes des boutons standards avec le code suivant :
> def OnWizPageChanged(self, evt):
> texts= ('&Next >','&Cancel','< &Back','&Finish')
> for o in self.wizard.GetChildren():
> if 'Button' in str(type(o)):
> text= o.GetLabel()
> if text in texts:
> o.SetLabel('nouveau label...')


Je trouve plus joli de l'écrire ainsi:

def OnWizPageChanged(self, evt):
self.wizard.FindWindow(wx.ID_FORWARD ).SetLabel('En avant!')
self.wizard.FindWindow(wx.ID_BACKWARD).SetLabel('E n arrière!')
self.wizard.FindWindow(wx.ID_CANCEL ).SetLabel('Quitter')

--
Amaury
  Réponse avec citation
Vieux 17/10/2007, 06h29   #10
jean-michel bain-cornu
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: wxPython

Bonjour,
>> Une astuce supplémentaire (c'est mon jour de bonté) : tu peux changer
>> les textes des boutons standards avec le code suivant :
>> def OnWizPageChanged(self, evt):
>> texts= ('&Next >','&Cancel','< &Back','&Finish')
>> for o in self.wizard.GetChildren():
>> if 'Button' in str(type(o)):
>> text= o.GetLabel()
>> if text in texts:
>> o.SetLabel('nouveau label...')

>
> Je trouve plus joli de l'écrire ainsi:
>
> def OnWizPageChanged(self, evt):
> self.wizard.FindWindow(wx.ID_FORWARD ).SetLabel('En avant!')
> self.wizard.FindWindow(wx.ID_BACKWARD).SetLabel('E n arrière!')
> self.wizard.FindWindow(wx.ID_CANCEL ).SetLabel('Quitter')
>


Effectivement, et de beaucoup. Il y avait eu un échange à ce sujet sur
la ml wxpython, mais je n'avais pas corrigé dans mon script...
  Réponse avec citation
Vieux 17/10/2007, 06h29   #11
jean-michel bain-cornu
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: wxPython

Bonjour,
>> Une astuce supplémentaire (c'est mon jour de bonté) : tu peux changer
>> les textes des boutons standards avec le code suivant :
>> def OnWizPageChanged(self, evt):
>> texts= ('&Next >','&Cancel','< &Back','&Finish')
>> for o in self.wizard.GetChildren():
>> if 'Button' in str(type(o)):
>> text= o.GetLabel()
>> if text in texts:
>> o.SetLabel('nouveau label...')

>
> Je trouve plus joli de l'écrire ainsi:
>
> def OnWizPageChanged(self, evt):
> self.wizard.FindWindow(wx.ID_FORWARD ).SetLabel('En avant!')
> self.wizard.FindWindow(wx.ID_BACKWARD).SetLabel('E n arrière!')
> self.wizard.FindWindow(wx.ID_CANCEL ).SetLabel('Quitter')
>


Effectivement, et de beaucoup. Il y avait eu un échange à ce sujet sur
la ml wxpython, mais je n'avais pas corrigé dans mon script...
  Réponse avec citation
Vieux 17/10/2007, 07h08   #12
jean-michel bain-cornu
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: wxPython

> self.wizard.FindWindow(wx.ID_FORWARD ).SetLabel('En avant!')
> self.wizard.FindWindow(wx.ID_BACKWARD).SetLabel('E n arrière!')
> self.wizard.FindWindow(wx.ID_CANCEL ).SetLabel('Quitter')
>


En fait, il faut utiliser self.wizard.FindWindowById (en tout cas dans
la version que j'utilise, la 2.6.1, qui n'est certes pas la dernière)
  Réponse avec citation
Vieux 17/10/2007, 07h08   #13
jean-michel bain-cornu
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: wxPython

> self.wizard.FindWindow(wx.ID_FORWARD ).SetLabel('En avant!')
> self.wizard.FindWindow(wx.ID_BACKWARD).SetLabel('E n arrière!')
> self.wizard.FindWindow(wx.ID_CANCEL ).SetLabel('Quitter')
>


En fait, il faut utiliser self.wizard.FindWindowById (en tout cas dans
la version que j'utilise, la 2.6.1, qui n'est certes pas la dernière)
  Réponse avec citation
Vieux 17/10/2007, 18h20   #14
Amaury Forgeot d'Arc
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: wxPython

jean-michel bain-cornu a écrit :
>> self.wizard.FindWindow(wx.ID_FORWARD ).SetLabel('En avant!')
>> self.wizard.FindWindow(wx.ID_BACKWARD).SetLabel('E n arrière!')
>> self.wizard.FindWindow(wx.ID_CANCEL ).SetLabel('Quitter')
>>

>
> En fait, il faut utiliser self.wizard.FindWindowById (en tout cas dans
> la version que j'utilise, la 2.6.1, qui n'est certes pas la dernière)


Argh! Ce que j'ai copié est directement adapté du C++.
wxPython n'aime pas les fonctions surchagées, et les renomme
systématiquement.
J'aurais dû vérifier avant de poster...

--
Amaury
  Réponse avec citation
Vieux 17/10/2007, 18h20   #15
Amaury Forgeot d'Arc
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: wxPython

jean-michel bain-cornu a écrit :
>> self.wizard.FindWindow(wx.ID_FORWARD ).SetLabel('En avant!')
>> self.wizard.FindWindow(wx.ID_BACKWARD).SetLabel('E n arrière!')
>> self.wizard.FindWindow(wx.ID_CANCEL ).SetLabel('Quitter')
>>

>
> En fait, il faut utiliser self.wizard.FindWindowById (en tout cas dans
> la version que j'utilise, la 2.6.1, qui n'est certes pas la dernière)


Argh! Ce que j'ai copié est directement adapté du C++.
wxPython n'aime pas les fonctions surchagées, et les renomme
systématiquement.
J'aurais dû vérifier avant de poster...

--
Amaury
  Réponse avec citation
Réponse


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Fuseau horaire GMT +1. Il est actuellement 07h05.


Édité par : vBulletin® version 3.7.3
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0 RC5 Tous droits réservés.
Version française #16 par l'association vBulletin francophone
PHWinfo est un site Éducation Sans Frontières ©2000-2008
Ad Management by RedTyger
©Tous droits réservés par les parties respectives
Page generated in 0,21841 seconds with 23 queries