我正在使用wxpython进行GUI,我是python的新手,...我做了一个GUI说大型机,当我点击它时它有一个按钮弹出一个新框架说儿童框架。
我想知道如何在子框架打开时隐藏大型机以及如何从子框架返回大型机。
希望得到好的建议
提前致谢
答案 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()