我们打开子框架时如何隐藏大型机

时间:2012-12-31 08:36:47

标签: python wxpython hide

我正在使用wxpython进行GUI,我是python的新手,...我做了一个GUI说大型机,当我点击它时它有一个按钮弹出一个新框架说儿童框架。

我想知道如何在子框架打开时隐藏大型机以及如何从子框架返回大型机。

希望得到好的建议

提前致谢

2 个答案:

答案 0 :(得分:3)

我用Pubsub来做这件事。我实际上在这里写了一个关于这个过程的教程:http://www.blog.pythonlibrary.org/2010/06/27/wxpython-and-pubsub-a-simple-tutorial/

如果要从子帧中终止程序,则需要将消息发送回父帧,告知关闭/销毁自身。您可以尝试将对父框架的引用传递给子框架并关闭它,但我怀疑这会导致错误,因为它会破坏子框架之前的父框架。

答案 1 :(得分:2)

使用隐藏和显示方法 在此示例中,按下按钮时,父框架和子框架互相替换:

import wx

class MyFrame(wx.Frame):
    def __init__(self, *args, **kwds):
        wx.Frame.__init__(self, *args, **kwds)
        self.button = wx.Button(self, wx.ID_ANY, "Parent")
        self.child = None

        self.Bind(wx.EVT_BUTTON, self.onbutton, self.button)
        self.SetTitle("myframe")

    def onbutton(self, evt):
        if not self.child:             # if the child frame has not been created yet, 
            self.child = Child(self)   # create it, making it a child of this one (self)
        self.child.Show()              # show the child
        self.Hide()                    # hide this one


class Child(wx.Frame):
    def __init__(self, parent, *args, **kwds):            # note parent outside *args               
        wx.Frame.__init__(self, parent, *args, **kwds)
        self.button = wx.Button(self, wx.ID_ANY, "Child")
        self.parent = parent                              # this is my reference to the
                                                          # hidden parent 
        self.Bind(wx.EVT_BUTTON, self.onbutton, self.button)
        self.SetTitle("child")

    def onbutton(self, evt):
        self.parent.Show()               # show the parent
        self.Hide()                      # hide this one


if __name__ == "__main__":
    app = wx.PySimpleApp(0)
    frame = MyFrame(None, wx.ID_ANY, "")
    app.SetTopWindow(frame)
    frame.Show()
    app.MainLoop()