2011-07-14 3 views
1

J'ai remarqué que les boîtes de dialogue standard affichent des boutons ANNULER et OK dans un ordre différent sous Windows et sous Linux. Sous Linux, vous obtenez "[ANNULER] [OK]", et sous Windows, "[OK] [ANNULER]".OK/ANNULER l'ordre dans les boîtes de dialogue "personnalisées" créées avec wxglade

Je n'ai aucun problème avec les boîtes de dialogue standard, mais mes "boîtes de dialogue personnalisées" doivent être ajustées pour correspondre au même ordre, en fonction de l'O.S.

Mes doutes:

Il semble 1.- exister une classe appelée wx.StdDialogButtonSizer, mais je ne sais pas comment il doit être utilisé. Quelqu'un peut-il publier un exemple simple/fonctionnel?

Et la « question principale »:

J'utilise wxglade 2.- au code « construire » pour les boîtes de dialogue, donc je ne suis pas sûr que je peux utiliser StdDialogButtonSizer. Existe-t-il un moyen de définir la boîte de dialogue avec un ordre donné, et dans l'exécution vérifier si les boutons suivent le bon ordre et "échanger" ces deux widgets sinon?

Merci

Répondre

5

Le StdDialogButtonSizer est certainement la voie à suivre pour les dialogues personnalisés. Voici un exemple simple:

import wx 

######################################################################## 
class SampleDialog(wx.Dialog): 
    """""" 

    #---------------------------------------------------------------------- 
    def __init__(self, parent): 
     """Constructor""" 
     wx.Dialog.__init__(self, parent, title="Tutorial") 

     btnOk = wx.Button(self, wx.ID_OK) 
     btnCancel = wx.Button(self, wx.ID_CANCEL) 

     btnSizer = wx.StdDialogButtonSizer() 
     btnSizer.AddButton(btnOk) 
     btnSizer.AddButton(btnCancel) 
     btnSizer.Realize() 
     self.SetSizer(btnSizer) 

#---------------------------------------------------------------------- 
if __name__ == '__main__': 
    app = wx.App(False) 
    dlg = SampleDialog(None) 
    dlg.ShowModal() 

Voir aussi WxPython: Cross-Platform Way to Conform Ok/Cancel Button Order ou http://wxpython-users.1045709.n5.nabble.com/wx-StdDialogButtonSizer-and-wx-ID-SAVE-td2360032.html

Je ne sais pas s'il y a une façon de le faire dans Glade ou non bien.

+0

Merci pour la réponse et pour l'exemple. Mon problème est que je crée le gui avec wxglade et il ne semble pas avoir de support pour ajouter un StdDialogButtonSizer (au moins je ne sais pas comment le faire). Je vais vérifier avec l'option "Ajouter un widget personnalisé" ... – sromero

+0

La plupart des constructeurs gui wxpython tels que glade supportent un sous-ensemble malheureusement limité des contrôles disponibles. J'ai trouvé qu'il était plus facile pour moi de générer du code similaire à ce dont j'avais besoin et de le modifier à la main. – Velociraptors

+0

Je suis d'accord avec Velociraptors. C'est définitivement une façon de faire. –

Questions connexes