Pregunta

Estoy escribiendo una clase en wxPython que muestra los cuadros de diálogo de error. Aquí está mi 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()

¿Cómo pueden cambiar los iconos por defecto utilizados para los personalizados ?? Traté de reemplazarlos con wx.Icon pero no funcionó. Son diálogos en wxPython limitada a los iconos que he utilizado anteriormente? En Mac OS X no parecen mostrar correctamente.

¿Fue útil?

Solución

Argumentos como wx.ICON_ERROR o wx.ICON_EXCLAMATION no son iconos reales, sino más bien banderas enteros para wx.MessageDialog constructor. Esos diálogos de mensajes se representan de forma nativa con las llamadas del sistema operativo, por lo que se ven de manera diferente, por ejemplo, en Windows y Mac OS X.

Como wxWidgets fue diseñado para la API de Windows, los argumentos MessageDialog se parecen mucho a la API de mensaje de Windows indicadores de estilo función (MB_ICONERROR, MB_ICONEXCLAMATION, etc.).

Si desea utilizar sus propios iconos para los diálogos, sólo hay que poner en práctica su propia clase de diálogo del mensaje, basándose en wx.Dialog.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top