IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

wxPython Discussion :

Libellé des boutons de dialogues wxPython


Sujet :

wxPython

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2013
    Messages : 3
    Par défaut Libellé des boutons de dialogues wxPython
    Bonjour

    Je maintiens une application écrite en Python et basée sur wxPython pour les aspects graphiques. Le public cible étant multinational, cette application est rédigée en Anglais.
    J'utilise fréquemment le composant wx.MessageDialog, par exemple pour confirmer l'arrêt du GUI :

    dlg = wx.MessageDialog(self, "Do you really want to QUIT", "Confirm Quit", wx.OK | wx.CANCEL | wx.ICON_EXCLAMATION)
    res = dlg.ShowModal()

    Ma question est la suivante : existe-t-il un moyen simple pour faire en sorte que les boutons soient libellés "OK" et "Cancel" au lieu de "OK" et "Annuler" ?
    Je n'en ai pas trouvé pour l'instant. Quelqu'un peut-il m'aider?

    Environnement : Python 2.5, wxPython 2.8 correspondant, sous Windows XP.

    Merci d'avance.

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 715
    Par défaut
    Salut,
    Si WxWidget est normalement construit, il choisira la langue en fonction du /locale/ de l'utilisateur qui sous Windows se paramètre via "regional setting" en espérant que vous ayez acheté la licence multi-langage support et installe les add-ons qui vont bien.
    Note: Je travaille sous Windows avec un clavier US pour ne pas être em... car I18N sous Windows XP, c'est pas gagne.

    Dit autrement, si les autres applications Windows s'affichent en anglais, il faut d'abord régler ça avant de regarder comment Wx s'en accommode.
    Ce qui passe par dire a Wx d'ignorer la locale qui vient de l'environnement pour en appliquer une autre.
    Un code du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    locale = wx.Locale()
    locale.Init(wx.LANGUAGE_XXX)
    Le plus difficile sera de trouver les bons 'XXX' mais maintenant vous savez ou chercher dans la doc.
    Bon courage
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2013
    Messages : 3
    Par défaut
    Bonjour.

    Merci wiztricks pour cette réponse.

    A la réflexion, ce que je voudrais faire est le "contraire de l'internationalisation" puisque je souhaite des libellés en Anglais pour mes boutons, quelle que soit la locale du poste sur lequel s'exécute mon application.

    C'est donc bien un code du genre de celui proposé que je dois mettre en oeuvre.
    Mon souci, c'est que j'ignore si la bonne séquence de code et la présence sur le poste du fichier wxstd.mo approprié suffisent à résoudre mon problème ...

    J'ai tenté de modifier la locale de wxPython par les instructions :
    self.locale = wx.Locale()
    self.locale.Init(wx.LANGUAGE_ENGLISH_US)
    ... mais cela n'a pas produit le résultat escompté.

    Je me demande si je dois persévérer dans cette voie ou pas.
    Si quelqu'un possède un exemple opérationnel de forçage de la langue dans wxPython, j'aimerais bien en profiter.

    Merci d'avance.

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 715
    Par défaut
    Salut,

    Citation Envoyé par oldzorg Voir le message
    Si quelqu'un possède un exemple opérationnel de forçage de la langue dans wxPython, j'aimerais bien en profiter.
    Que dit votre ami Google?
    Je n'aime pas votre démarche: il n'y a qu'en modifiant le /regional setting/ que vous saurez si Wx a tout ce qu'il faut pour afficher correctement les boutons de dialogues dans la lange ad hoc.

    Forcer Wx a ignorer le /regional setting/ via wx.Locale fonctionne ou pas. Wx comme beaucoup de GUI sont construits au-dessus du windows manager natif. Ils proposent un "look&feel" semblable et peuvent déléguer l’opération au widget "natif" (qui ignorera wx.Locale).

    Si Google n'a pas la réponse: comparer le comportement de Wx sous Windows et un Ubuntu, aller voir dans les sources, ... prendra du temps.

    Dans le pire des cas - l’opération est déléguée au widget natif -, il vous faudra coder une boite de dialogue remplaçant wx.MessageDialog (ou trouver un code qui...) prendra aussi du temps.

    Il serait aussi interressant de pousser la question dans un forum plus oriente WxWidget car WxPython est juste une API alors que le problème est entre Windows et Wx.

    Bon courage,
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2013
    Messages : 3
    Par défaut
    Bonjour

    Pour conclure sur la question posée : il semble effectivement que le composant MessageDialog s'appuie sur un élément wxWidgets, voire un dialogue Windows natif. D'où le caractère inopérant des modifications de "locale", tant Python que wxPython. Il faut donc développer un composant spécifique si l'on souhaite maîtriser le libellé des boutons.

    Cependant, il y a un Bon Dieu pour les développeurs puisque la "Development Release" de wxPython (v2.9.5.0) propose cette fonctionnalité en standard, au travers de méthodes de type SetOKCancelLabels("OK Label", "Cancel Label").
    Cette release est prévue pour fonctionner avec Python 2.6 ou 2.7.

    Si elle ne résout pas mon cas de figure (je travaille sur Python 2.5), cette nouvelle pourra, je l'espère, satisfaire mes pairs développeurs se heurtant au même problème.

    Salutations

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. messageDlg, libellés des boutons
    Par jcs2 dans le forum Composants VCL
    Réponses: 2
    Dernier message: 06/02/2012, 14h25
  2. Modifier le texte des boutons de dialogues standard
    Par ch16089 dans le forum Débuter
    Réponses: 2
    Dernier message: 09/09/2011, 10h59
  3. [MessageBox] et traduction libellé des boutons
    Par Droïde Système7 dans le forum Débuter
    Réponses: 5
    Dernier message: 21/08/2010, 19h04
  4. Changer intitulés des boutons des boites de dialogue
    Par marti dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 23/08/2006, 13h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo