Pergunta

Eu estou escrevendo uma classe em wxPython que diálogos exibe erro. Aqui está o meu código:

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()

Como pode alterar os ícones padrão usado para os personalizados ?? Eu tentei substituí-los com wx.Icon mas não funcionou. São diálogos em wxPython limitado aos ícones que usei acima? No Mac OS X que não parecem exibir corretamente.

Foi útil?

Solução

Argumentos como wx.ICON_ERROR ou wx.ICON_EXCLAMATION não são ícones reais, mas sim inteiro bandeiras para construtor wx.MessageDialog. Esses diálogos de mensagem são prestados de forma nativa com chamadas de sistema operacional, assim que olham de forma diferente, por exemplo, no Windows e Mac OS X.

Como wxWidgets foi concebido para o Windows API, argumentos MessageDialog se assemelham do Windows API MessageBox bandeiras função estilo (MB_ICONERROR, MB_ICONEXCLAMATION, etc.).

Se você quiser usar seus próprios ícones para diálogos, você só tem que implementar sua própria classe de diálogo mensagem, baseando-se em wx.Dialog.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top