2009-02-28 8 views
0

J'écris une classe dans wxPython qui affiche des boîtes de dialogue d'erreur. Voici mon code:wxPython dialogs

import wx 

class Error: 
    def __init__(self, number, string): 
     self.error_type = number 
     self.error_message = string 
     self.choose_error() 

    def choose_error(self): 
     if self.error_type == 1: 
     self.DisplayMessage1() 
     elif self.error_type == 2: 
     self.DisplayMessage2() 
     elif self.error_type == 3: 
     self.DisplayMessage3() 
     elif self.error_type == 4: 
     self.DisplayMessage4() 

    def DisplayMessage1(self): 
     dial = wx.MessageDialog(None, self.error_message, 'Info', wx.OK) 
     dial.ShowModal() 

    def DisplayMessage2(self): 
     dial = wx.MessageDialog(None, self.error_message, 'Error', wx.OK | 
     wx.ICON_ERROR) 
     dial.ShowModal() 

    def DisplayMessage3(self): 
     dial = wx.MessageDialog(None, self.error_message, 'Question', 
     wx.YES_NO | wx.NO_DEFAULT | wx.ICON_QUESTION) 
     dial.ShowModal() 

    def DisplayMessage4(self): 
     dial = wx.MessageDialog(None, self.error_message, 'Warning', wx.OK | 
     wx.ICON_EXCLAMATION) 
     dial.ShowModal() 

Comment changer les icônes par défaut utilisées pour celles personnalisées? J'ai essayé de les remplacer par wx.Icon mais cela n'a pas fonctionné. Les boîtes de dialogue dans wxPython sont-elles limitées aux icônes que j'ai utilisées plus haut? Sur Mac OS X, ils ne semblent pas s'afficher correctement.

Répondre

1

Les arguments tels que wx.ICON_ERROR ou wx.ICON_EXCLAMATION ne sont pas de véritables icônes, mais plutôt des indicateurs entiers pour le constructeur wx.MessageDialog. Ces boîtes de dialogue de message sont rendues en mode natif avec les appels du système d'exploitation, de sorte qu'elles ont un aspect différent, par ex. sous Windows et Mac OS X.

Comme wxWidgets a été conçu pour API Windows, MessageDialog arguments ressemblent étroitement à des drapeaux de style API Windows MessageBox function (MB_ICONERROR, MB_ICONEXCLAMATION, etc.).

Si vous souhaitez utiliser vos propres icônes pour les boîtes de dialogue, il vous suffit d'implémenter votre propre classe de dialogue de message, en vous basant sur wx.Dialog.