[WxDesigner] Radiobox et events [MAJ]

Radiobox et events [MAJ] [WxDesigner] - Python - Programmation

Marsh Posté le 02-12-2008 à 20:32:57    

Bonjour à tous.  :hello:  
 Je m'intéresse depuis quelques temps à ce beau langage qu'est Python. Je m'y suis mis pour concevoir un petit programme d'aide à la décision. Pour faire quelquechose d'agréable à regarder, j'ai cherché un RAD pour aller avec la bibliothèque WXPython (plus complète que Tkinter je pense). J'ai donc emprunté la licence WxDesigner qui a arrêté la programmation depuis un moment.
 J'ai créé quatre secteurs avec boutons radio (2 ou 3 choix possibles) et j'aimerais que en fonction des choix dans les boutons radio, un texte s'affiche donnant un conseil à l'utilisateur .
 J'aimerais savoir comment procèder.
 
MAJ: Finalement, j'ai relu le code donné par WxDesigner et j'ai remarqué que je n'avait pas de fonction pour récuperer la variable choisie par l'utilisateur dans les radiobox . j'aimerais savoir comment récuperer ces variables (pour créer une fonction à la fin du programme) et comment faire fonctionner un event_button pour printer un texte.
Je vous laisse le code généré par WxDesigner pour les radiobox

Spoiler :

item15 = wx.RadioBox( parent, ID_RADIOBOX, "Quantité", wx.DefaultPosition, wx.DefaultSize,  
        ["Choix 1","Choix 2","Choix 3"] , 1, wx.RA_SPECIFY_COLS )


 
 
Je vous remercie de m'avoir lut.  :) je vous salue les devs Python. (avec beaucoup d'admiration pour les animateurs de la section).


Message édité par Sims57 le 05-12-2008 à 23:37:11

---------------
Une seule DLL vous manque et tout est déréglé...
Reply

Marsh Posté le 02-12-2008 à 20:32:57   

Reply

Marsh Posté le 07-12-2008 à 11:38:10    

http://www.wxpython.org/docs/api/w [...] class.html
- item15.GetSelection() => te donne le numero de la selection
- item15.GetStringSelection() => te donne la valeur texte de la selection courante

 

Sinon il te faut gérer l'événement wx.EVT_BUTTON sur un bouton. Par exemple :

Code :
  1. self.okButton = wx.Button(id=wxID_CONFDIALOGOKBUTTON,
  2.      label=u'Valider', name=u'okButton', parent=self, pos=wx.Point(48,
  3.      192), size=wx.Size(88, 27), style=0)
  4. self.okButton.Bind(wx.EVT_BUTTON, self.OnOkButton,
  5.       id=wxID_CONFDIALOGOKBUTTON)
  6.  
  7. #[...]
  8.  
  9. def OnOkButton(self, event):
  10.    # Tes actions ici
  11.    # ...
 

Je ne connais pas wxDesigner, mais Boa COnstructor est pas trop mal comme IDE pour wxPython ;)


Message édité par e_esprit le 07-12-2008 à 11:39:49

---------------
Ce n'est point ma façon de penser qui a fait mon malheur, c'est celle des autres.
Reply

Marsh Posté le 07-12-2008 à 13:56:06    

Je te remercie beaucoup de tes explications qui sont très claires.  :) Maintenant, je sait ce que je voulais savoir.
 
Je vais pouvoir finir mon code  :D .
 
Encore une fois [:sqel] .


---------------
Une seule DLL vous manque et tout est déréglé...
Reply

Marsh Posté le 14-12-2008 à 13:04:39    

Bon, finalement, mon code n'est pas autant propre que ce que j'espérais.
 
Je vient d'installer Boa Constructor et j'ai réussit à obtenir une interface beaucoup plus proche de ce que je veut qu'avec WxDesigner.
J'ai donc mes 3 radiobox (à 3 et 2 choix). J'ai posé un bouton de validation et créé une staticbox.
Mon soucis est que j'aimerais créer un texte dynamique qui s'afficherais dans la static box (peut être utiliser la fonction Genstatictext) mais je ne trouve pas l'endroit où coder mon évennement (soit l'affichage d'un texte dépendant des choix de l'utilisateur dans les radiobox.)
 
Je vous remercie de m'avoir accordé attention. [:emanu]


---------------
Une seule DLL vous manque et tout est déréglé...
Reply

Marsh Posté le 14-12-2008 à 13:39:18    

A quel moment (sur quelle interaction de l'utilisateur) ton texte doit-il être modifié ?


---------------
Ce n'est point ma façon de penser qui a fait mon malheur, c'est celle des autres.
Reply

Marsh Posté le 14-12-2008 à 13:41:41    

Mon texte doit apparaitre (ou être modifié si i la déja été généré) lors du clic gauche sur le bouton "validation".


---------------
Une seule DLL vous manque et tout est déréglé...
Reply

Marsh Posté le 14-12-2008 à 13:51:10    

Et bien tu rajoutes un evenement ButtonEvt sur ton bouton (Onglet Evt de la fenetre "Inspector" ).
Ca va te rajouter une méthode dans ton code, avec un nom de type OnButtonNameButtonEvt (enfin je garantie pas le nom, c'est de mémoire), tu n'as plus qu'à completer cette méthode.


---------------
Ce n'est point ma façon de penser qui a fait mon malheur, c'est celle des autres.
Reply

Marsh Posté le 14-12-2008 à 14:02:02    

Je vient de générer le code avec ce qu'il faut dedans. J'ai effectivement la methode mais comment savoir où il vas me PRINT le texte généré? (Ou en gros => quelle partie de fonction écrire pour que tout s'écrive au bon endroit?)


---------------
Une seule DLL vous manque et tout est déréglé...
Reply

Marsh Posté le 14-12-2008 à 14:06:48    

Il faut utiliser la méthode SetLabel de ton composant StaticText


---------------
Ce n'est point ma façon de penser qui a fait mon malheur, c'est celle des autres.
Reply

Marsh Posté le 14-12-2008 à 15:19:35    

Donc j'écris ma fonction et à la place d'utiliser print, j'écris statictext1.Setlabel(self, label) suivi de ce qui doit être affiché?

 

EDIT: j'ai trouvé: ce seras staticbox1.setlabel("texte à afficher" ).

 

Je te remercie de m'avoir accordé de ton temps. Cela ne doit pas être facile de répondre un débutant qui n'a vu que le basic et le visualbasic. :D
Finalement, le python c'est pas tellement complexe.

 

Encore merci.


Message édité par Sims57 le 14-12-2008 à 15:26:11

---------------
Une seule DLL vous manque et tout est déréglé...
Reply

Marsh Posté le 14-12-2008 à 15:19:35   

Reply

Marsh Posté le 14-12-2008 à 15:23:02    

Ca doit plutot être quelque chose comme ça ;) :

Code :
  1. self.statictext1.SetLabel("Blablabla, blablabla : blabla !!" )


---------------
Ce n'est point ma façon de penser qui a fait mon malheur, c'est celle des autres.
Reply

Marsh Posté le 14-12-2008 à 15:27:56    

Bon comme dit, merci bien ! j'ai un code fonctionnel maintenant [:ginie].


---------------
Une seule DLL vous manque et tout est déréglé...
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed