Вопрос

Я пишу класс в 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.Значок, но это не сработало.Ограничены ли диалоги в wxPython значками, которые я использовал выше?В Mac OS X они, похоже, отображаются некорректно.

Это было полезно?

Решение

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top