我正在使用wx(3.0.2.0)在Python(2.7)中开发GUI。
主框架是一个Frame对象,我有一个按钮,弹出一个Dialog窗口子对象。在此对话框窗口中,我还有一个按钮,再次打开另一个Dialog窗口子窗口,并隐藏第一个Dialog窗口(以避免打开太多窗口)。现在在最后一个对话窗口,我有一个关闭按钮,我想要的是这个按钮关闭对话框并显示父对话窗口(之前已隐藏),而不关闭它。
我无法做到这一点,每次关闭最后一个Dialog窗口时,它也关闭了父对话窗口,我最终在主框架上。
有人知道如何做到这一点吗?
以下是示例代码:
import wx
class AST_MainFrame(wx.Frame):
def __init__(self, parent, id, title):
wx.Frame.__init__(self, parent, id, title)
self.configure_project_btn = wx.Button(self, 1, "Configure 1")
self.Bind(wx.EVT_BUTTON, self.on_configure, id=1)
def on_configure(self, event):
test_frame = AST_SheetFrame(self)
test_frame.ShowModal()
test_frame.Destroy()
class AST_SheetFrame(wx.Dialog):
def __init__(self, parent):
super(AST_SheetFrame, self).__init__(parent, style=(wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER))
self.configure_project_btn = wx.Button(self, 2, "Configure 2")
self.Bind(wx.EVT_BUTTON, self.on_configure, id=2)
def on_configure(self, event):
test_frame = AST_ModuleFrame(self)
test_frame.ShowModal()
test_frame.Destroy()
class AST_ModuleFrame(wx.Dialog):
def __init__(self, parent):
super(AST_ModuleFrame, self).__init__(parent, style=(wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER))
self.parent = parent
self.save_n_quit_btn = wx.Button(self, wx.ID_CLOSE, "Save and Close")
self.Bind(wx.EVT_BUTTON, self.on_quit, id=wx.ID_CLOSE)
self.Bind(wx.EVT_CLOSE, self.on_quit)
self.parent.Hide()
def on_quit(self, event):
self.parent.Show()
self.Destroy()
class GUI(wx.App):
def OnInit(self):
app = AST_MainFrame(None, -1, "Main frame")
app.Show(True)
return True
def main():
app = GUI(0)
app.MainLoop()
if __name__ == '__main__':
main()