从主菜单控制三个帧

时间:2011-03-15 06:31:21

标签: python wxpython

我分别创建了三个框架。我需要调用这些子帧 来自位于主框架中的按钮的点击事件。当一个 子框架是打开的,我希望隐藏或禁用主框架 直到子框架关闭。我怎样才能做到这一点?

提前致谢。

3 个答案:

答案 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()