диалоги wxPython - PullRequest
       17

диалоги wxPython

0 голосов
/ 01 марта 2009

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

1 Ответ

1 голос
/ 01 марта 2009

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

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

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

...