2

私はwxpythonを使用してGUIを実行しています。Pythonは初めてです。GUIでメインフレームと表示し、クリックするとボタンが表示され、新しいフレームで子フレームと表示されます。

子フレームが開いているときにメインフレームを非表示にする方法と、子フレームからメインフレームに戻る方法を知りたいと思いました。

良いアドバイスを期待しています

前もって感謝します

4

2 に答える 2

4

私はPubsubを使用してこの種のことを行いました。私は実際にここでプロセスに関するチュートリアルを書きました:http ://www.blog.pythonlibrary.org/2010/06/27/wxpython-and-pubsub-a-simple-tutorial/

子フレームからプログラムを終了する場合は、親フレームにメッセージを送り返して、それ自体を閉じる/破棄するように指示します。親フレームへの参照を子に渡して閉じることもできますが、子の前に親が破壊されるため、エラーが発生する可能性があります。

于 2013-01-02T15:47:54.050 に答える
2

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()
于 2012-12-31T10:47:19.330 に答える