Domanda

Sto scrivendo una classe in wxPython che visualizza le finestre di dialogo di errore. Ecco il mio codice:

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

Come si può cambiare le icone di default utilizzati per quelli personalizzati ?? Ho cercato di sostituirli con wx.Icon, ma non ha funzionato. Sono finestre di dialogo in wxPython limitata alle icone che ho usato in precedenza? Su Mac OS X non sembrano per visualizzare correttamente.

È stato utile?

Soluzione

Argomenti come wx.ICON_ERROR o wx.ICON_EXCLAMATION non sono icone reali, ma piuttosto bandiere interi per costruttore wx.MessageDialog. Queste finestre di dialogo di messaggio sono resi in modo nativo con le chiamate di sistema operativo, in modo da guardare in modo diverso per esempio su Windows e Mac OS X.

Come wxWidgets è stato progettato per Windows API, argomenti MessageDialog molto simili API MessageBox di Windows bandiere funzione di stile (MB_ICONERROR, MB_ICONEXCLAMATION, ecc.).

Se si desidera utilizzare le proprie icone per le finestre di dialogo, è sufficiente per implementare la propria classe messaggio di dialogo, basandosi su wx.Dialog.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top