2009-02-28 3 views
0

Я пишу класс в wxPython, который отображает диалоговые окна ошибок. Вот мой код: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() 

Как изменить значки по умолчанию, используемые для пользовательских? Я попытался заменить их на wx.Icon, но это не сработало. Диалоги в wxPython ограничены значками, которые я использовал выше? В Mac OS X они не отображаются правильно.

ответ

1

Аргументы, подобные wx.ICON_ERROR или wx.ICON_EXCLAMATION, не являются настоящими значками, а целочисленными флагами для wx.MessageDialog конструктором. Эти диалоговые окна сообщений производятся из-за вызовов операционной системы, поэтому они выглядят по-другому. на ОС Windows и Mac X.

Как WxWidgets был разработан для Windows API, MessageDialog аргументы очень похожи на Windows API MessageBox function флаги стилей (MB_ICONERROR, MB_ICONEXCLAMATION и т.д.).

Если вы хотите использовать свои собственные значки для диалогов, вам просто нужно реализовать свой собственный диалоговый класс сообщений, основываясь на wx.Dialog.