2009-05-04 7 views
2

J'apprends wxPython donc la plupart des bibliothèques et des classes sont nouveaux pour moi.WxPython: Way multiplateformes à Conform Ok/bouton Annuler la commande

Je crée une classe de boîte de dialogue Préférences mais je ne connais pas la meilleure façon de vérifier que les boutons OK/Annuler (ou Enregistrer/Fermer) sont dans le bon ordre pour la plate-forme. Ce programme est destiné à fonctionner à la fois sur GNOME et Windows, donc je veux faire en sorte que les boutons sont dans l'ordre correct pour chaque plate-forme.

Est-ce que wxPython fournissent des fonctionnalités qui me empêche de faire une sorte de if platform.system() == 'Linux' pirater?

Répondre

4

L'apparence d'une boîte de dialogue ne peut changer que si vous utilisez des boîtes de dialogue de stock (comme wx.FileDialog), si vous créez vous-même la mise en page restera la même sur chaque plate-forme. Wx.Dialog a une méthode CreateStdDialogButtonSizer qui crée un wx.StdDialogButtonSizer avec des boutons standard où vous pouvez voir des différences de disposition sur différentes plates-formes, mais vous n'avez pas besoin de l'utiliser.

0

Si vous allez utiliser WX (ou toute autre boîte à outils x-plateforme) vous feriez mieux de la confiance qu'il fait la bonne chose, mon -!)

0

Il y a le widget GenericMessageDialog qui devrait faire le droit chose en fonction de la plate-forme (mais je ne l'ai jamais utilisé, donc je ne suis pas sûr que c'est le cas). Voir la démo de wxPython.

Vous pouvez également utiliser la bibliothèque addon SizedControls (elle fait partie de wxPython). La classe SizedDialog permet de créer des boîtes de dialogue conformes aux directives d'interface utilisateur de chaque plate-forme. Voir la démo de wxPython.

2

Vous pouvez utiliser un StdDialogButtonSizer

http://www.wxpython.org/docs/api/wx.StdDialogButtonSizer-class.html

Tant que vos boutons ont les ID standards, ils seront mis dans le bon ordre. Cependant, pour ajouter une ride, sur un Mac par exemple, une boîte de dialogue de préférences n'aurait pas de boutons OK/Annuler. Cela appliquerait automatiquement les préférences au fur et à mesure de leur saisie (ou au moins lors de la fermeture du dialogue). Donc, vous devrez toujours faire un peu de reniflage de la plateforme dans ce cas.