Как указано в некоторых других темах, wx.MessageDialog
не отвечает на многие функции API, такие как внешний вызов от Destroy()
и т. Д. Таким образом, существует необходимость в создании wx.GenericMessageBox
, полученных из wx.Dialog
. Вот оно:Общее сообщение MessageBox, полученное из wx.Dialog
import wx
class GenericMessageBox(wx.Dialog):
def __init__(self, parent, text, title = ''):
wx.Dialog.__init__(self, parent, -1, title = title, size = (360,120), style = wx.DEFAULT_DIALOG_STYLE)
panel = wx.Panel(self, wx.ID_ANY, size = (360, 50), pos = (0,0))
panel.SetBackgroundColour('#FFFFFF')
label = wx.StaticText(panel, -1, text, pos = (50,20))
panel2 = wx.Panel(self, wx.ID_ANY, size = (360, 40), pos = (0, 50))
btn = wx.Button(panel2, wx.ID_OK, pos = (250,7))
self.ShowModal()
app = wx.App()
frame = wx.Frame(None, 0, 'Test')
frame.Show()
GenericMessageBox(frame, 'This is a message box that is derived from wx.Dialog. You can Destroy() it from anywhere in the code.', 'Test')
app.MainLoop()
В отличие от wx.lib.agw.genericmessagedialog
, цель этого одного является иметь ближе взглянуть можно родной вид ОС (здесь Windows, взгляд). [genericmessagedialog
размещены фото в кнопки, которая не является, как родной внешний вид Windows']
Как бы это было возможно улучшить этот диалог с тем, что его размер автоматически увеличивается, если StaticText
нужны две строки?
Кроме того, позиционирование ОК (x, y) в порядке и по центру на серой панели на моей машине, но будет ли оно одинаковым на других платформах?
(я думаю, что такой фрагмент может быть полезным для сообщества.)
Спасибо большое. Можно ли установить максимальную ширину для 'wx.StaticText', чтобы при автоматическом разбиении на абзац нескольких строк текста было слишком много? – Basj
@Basj Да, попробуйте ** self.m_staticText.Wrap (SIZE) ** –