我是wxPython的新手(wxPython 3.0.0.0,python 2.7,Mac OS X),我正在尝试在应用的OnInit功能中显示一个消息对话框。示例脚本我使用非常相似的三行代码块运行正常工作,但是当我使用这个代码块时,消息对话框会暂时显示,并消失。有什么傻事我做错了吗?
import wx
class MyApp(wx.App):
def __init__(self):
wx.App.__init__(self, redirect=False)
def OnInit(self):
self.rootView = wx.Frame(parent=None, id=-1, title="Wire Frame",
pos=(150, 150), size=(350, 250))
self.rootView.Show()
self.SetTopWindow(self.rootView)
dlg = wx.MessageDialog(self.rootView, "Hi", "title", wx.OK|wx.ICON_ERROR)
dlg.ShowModal()
dlg.Destroy()
return True
if __name__ == "__main__":
app = MyApp()
app.MainLoop()
编辑:使用wxPython 2.8.12.1在Ubuntu上测试过,并且行为正常。我会尝试在那里获得一个更新的版本来测试它。也许这是wxPython中的一个错误?我已经提交了一份错误报告,所以我很快就会发现。
答案 0 :(得分:1)
如果您将MessageDialog视为FileDialog或类似内容,会发生什么?
import wx
class MyApp(wx.App):
def __init__(self):
wx.App.__init__(self, redirect=False)
def OnInit(self):
self.rootView = wx.Frame(parent=None, id=-1, title="Wire Frame",
pos=(150, 150), size=(350, 250))
self.rootView.Show()
self.SetTopWindow(self.rootView)
dlg = wx.MessageDialog(self.rootView, "Hi", "title", wx.OK|wx.ICON_ERROR)
#dlg.ShowModal()
if dlg.ShowModal() != wx.ID_OK:
dlg.Destroy()
return True
if __name__ == "__main__":
app = MyApp()
app.MainLoop()
可能只是一种狡猾的方式,但这可能有用......
至少,这似乎在Windows上的wxpyhon2.8中以相同的方式工作。