диалоги wxPython

Я пишу класс в wxPython, который отображает диалоги ошибок. Вот мой код:

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 они не отображаются правильно.


person user72001    schedule 28.02.2009    source источник


Ответы (1)


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

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

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

person DzinX    schedule 01.03.2009