Диалоги wxPython
-
11-09-2019 - |
Вопрос
Я пишу класс в wxPython, который отображает диалоговые окна с ошибками.Вот мой код:
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()
Как можно изменить значки, используемые по умолчанию, на пользовательские??Я попытался заменить их на wx.Значок, но это не сработало.Ограничены ли диалоги в wxPython значками, которые я использовал выше?В Mac OS X они, похоже, отображаются некорректно.
Решение
Аргументы , подобные wx.ICON_ERROR
или wx.ICON_EXCLAMATION
являются не реальными значками, а скорее целочисленными флагами для wx.MessageDialog
конструктор.Эти диалоговые окна сообщений отображаются изначально с помощью вызовов операционной системы, поэтому они выглядят по-другому, напримерв Windows и Mac OS X.
Поскольку wxWidgets был разработан для Windows API, MessageDialog
аргументы очень похожи на Windows API Функция MessageBox (почтовый ящик) флаги стиля (MB_ICONERROR
, MB_ICONEXCLAMATION
, и т.д.).
Если вы хотите использовать свои собственные значки для диалоговых окон, вам просто нужно реализовать свой собственный класс message dialog, основанный на wx.Dialog
.