何在wxPython 3.0(凤凰城)制作wx.Frame模态

时间:2017-03-30 17:56:20

标签: wxpython

曾经存在于wxPython 2中

self.MakeModal(True)

但不是凤凰城。 我如何展示Modal? 我不想使用wx.Dialog,因为我需要添加状态栏。

1 个答案:

答案 0 :(得分:2)

我使用的一个很好的解决方法是将样式标志wx.FRAME_FLOAT_ON_PARENT添加到框架并通过frame.GetParent().Disable()禁用父窗口。然后将类似模态的框架绑定到EVT_CLOSE并通过frame.GetParent().Enable()重新启用父窗口。

------更新-----

Robin Dunn的建议是一种更适合模式化框架的方法。 从wx phoenix migration guide开始,将其添加到Frame类

def MakeModal(self, modal=True):
    if modal and not hasattr(self, '_disabler'):
        self._disabler = wx.WindowDisabler(self)
    if not modal and hasattr(self, '_disabler'):
        del self._disabler