wxPython - wx.MessageDialog在没有点击的情况下消失

时间:2014-05-10 23:10:49

标签: python wxpython

我是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中的一个错误?我已经提交了一份错误报告,所以我很快就会发现。

1 个答案:

答案 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中以相同的方式工作。