在wxPython中弹出一个新帧并删除旧帧

时间:2016-06-09 21:13:39

标签: wxpython

我有一个简单的框架,上面有一个按钮。我想要做的是当我按下按钮时,我想关闭框架并打开一个新框架。旧的应该被销毁,而新的应该具有与被销毁的框架相同的功能。我想这是一个无限的时间。

这是我刚写的代码:

import wx


class subPanel(wx.Panel):
    def __init__(self, parent, value = 2):
        wx.Panel.__init__(self, parent)
        self.BtnPressHere = wx.Button(self, -1, "Press Here")
        self.value = value
        hbox = wx.BoxSizer()
        hbox.Add(self.BtnPressHere, 1, wx.EXPAND)
        self.SetSizer(hbox)

if __name__ == "__main__":
    class Screen(wx.Frame):
        def __init__(self, parent):
            wx.Frame.__init__(self, parent, size = (600,600)) 
            panel = wx.Panel(self)
            panel0 = subPanel(panel, 0)
            box = wx.BoxSizer()
            box.Add(panel0, 1, wx.ALL |  wx.EXPAND)
            panel.SetSizer(box)
            self.Centre()
            self.Show(True)


    app = wx.App(False)
    Screen(None)
    app.MainLoop()

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

它很容易解决,看代码:

import wx

class ButtonFrame(wx.Frame):
    def __init__(self, value):
        wx.Frame.__init__(self,None)

        self.BtnPressHere = wx.Button(self, -1, "Press Here: " + str(value))
        self.BtnPressHere.Bind(wx.EVT_BUTTON, self.OnPress) # Need to bind the event
        self.value = value
        self.Centre()
        self.Show()

    def OnPress(self,evt):
        ButtonFrame(self.value + 1)
        self.Destroy()  # Destroy this instance

if __name__ == "__main__":

    app = wx.App(False)
    ButtonFrame(0)
    app.MainLoop()

说明:

  • 如果您只在所有框架区域放置一个按钮,则不需要使用面板和大小调整器。
  • self.Destroy()调用将在创建另一个窗口后销毁该窗口。