我分别创建了三个框架。我需要调用这些子帧 来自位于主框架中的按钮的点击事件。当一个 子框架是打开的,我希望隐藏或禁用主框架 直到子框架关闭。我怎样才能做到这一点?
提前致谢。
答案 0 :(得分:1)
我使用pubsub来做这件事。在我打开子框架后,我调用主框架的Hide方法。当我关闭子框架时,我使用pubsub让主框架知道它可以显示自己。你可以在这里看到一个相当简单的教程:
http://www.blog.pythonlibrary.org/2010/06/27/wxpython-and-pubsub-a-simple-tutorial/
答案 1 :(得分:0)
为每个帧创建一个事件队列,当打开子帧时,设置一个在处理事件上检查的变量以加入队列,然后在销毁子帧时取消设置。如果设置了此变量,则抛弃该消息,否则将其添加到队列中进行处理。
根据您使用的库,大部分内容可能都有一个很好的内置方式。
答案 2 :(得分:0)
您的子框架是否以主框架为父框架?如果是这样,你可以创建一个变量self.parent = parent,而不是在关闭/销毁子框架之前向OnClose处理程序添加一行以显示父框架:
# Untested, although it should give you an idea of what to do
class ChildFrame(wx.Frame):
def __init__(self, parent, id=-1, title="Default Frame", pos=wx.DefaultPosition, size=wx.DefaultSize, style=wx.DEFAULT_FRAME_STYLE):
wx.Frame.__init__(self, parent, id, title, pos, size, style)
self._parent = parent
self.Bind(wx.EVT_CLOSE, self.OnClose)
def OnClose(self, event):
# display your parent frame
self._parent.Show()