私はwxpythonを使用してGUIを実行しています。Pythonは初めてです。GUIでメインフレームと表示し、クリックするとボタンが表示され、新しいフレームで子フレームと表示されます。
子フレームが開いているときにメインフレームを非表示にする方法と、子フレームからメインフレームに戻る方法を知りたいと思いました。
良いアドバイスを期待しています
前もって感謝します
私はPubsubを使用してこの種のことを行いました。私は実際にここでプロセスに関するチュートリアルを書きました:http ://www.blog.pythonlibrary.org/2010/06/27/wxpython-and-pubsub-a-simple-tutorial/
子フレームからプログラムを終了する場合は、親フレームにメッセージを送り返して、それ自体を閉じる/破棄するように指示します。親フレームへの参照を子に渡して閉じることもできますが、子の前に親が破壊されるため、エラーが発生する可能性があります。
HideメソッドとShowメソッドを使用します。
この例では、ボタンを押すと、親フレームと子フレームが互いに置き換えられます。
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()