diálogos wxPython
-
11-09-2019 - |
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.
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
.