鉴于您的评论,为什么不创建自己的对话框。
类似于:
import wx
class MyFrame(wx.Frame):
def __init__(self, parent):
wx.Frame.__init__(self, parent, -1, "Custom Dialog",size=(200,100))
self.panel = wx.Panel(self)
sizer = wx.BoxSizer(wx.VERTICAL)
self.button = wx.Button(self.panel, label="Dialog")
sizer.Add(self.button, 0, wx.EXPAND | wx.ALL, 10)
self.panel.SetSizer(sizer)
self.Bind(wx.EVT_BUTTON, self.OnButton)
def OnButton(self,event):
msg = "Please select one of the options below\n"
msg += "Help is available if you have encountered this issue\n"
dlg = MessageDialog(self.panel,msg,"Message Dialog Heading")
dlg.ShowModal()
if dlg.result == wx.ID_HELP:
print ("Help text was displayed")
elif dlg.result == wx.ID_OK:
print ("Ok was Selected")
elif dlg.result == wx.ID_CANCEL:
print ("Cancel was Selected")
else:
print ("Dialog Exited")
dlg.Destroy()
class MessageDialog(wx.Dialog):
def __init__(self, parent, message, title):
wx.Dialog.__init__(self, None, -1, title)
ok = wx.Button(self, wx.ID_OK)
no = wx.Button(self, wx.ID_CANCEL)
help = wx.Button(self, wx.ID_HELP)
self.text = wx.StaticText(self, -1, message)
hbox = wx.BoxSizer(wx.HORIZONTAL)
hbox.Add(self.text,1,0,0)
hbox2 = wx.BoxSizer(wx.HORIZONTAL)
hbox2.Add(ok,0,0,0)
hbox2.Add(no,0,0,0)
hbox2.Add(help,0,0,0)
vbox = wx.BoxSizer(wx.VERTICAL)
vbox.Add(hbox, 0, wx.ALIGN_CENTER)
vbox.Add(hbox2, 0, wx.ALIGN_CENTER)
self.SetSizer(vbox)
self.Bind(wx.EVT_BUTTON,self.OnButton)
self.Bind(wx.EVT_CLOSE,self.OnExit)
self.result = None
help.SetFocus()
def OnButton(self,event):
self.result = event.GetId()
if event.GetId() == wx.ID_HELP:
wx.MessageBox('This is my help text dialog', 'Help',wx.OK | wx.ICON_INFORMATION)
self.Destroy()
def OnExit(self,event):
self.result = None
self.Destroy()
app = wx.App()
frame = MyFrame(None)
frame.Show()
app.MainLoop()