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