我在Delphi / Pascal中开发了许多桌面应用程序 - 在这里,我使用了模态形式。
//Mainform
Form1:= TForm1.Create(Self);
If Form1.Showmodal =mrOK then ….
In Form1 you cal call vars in Mainform like mainform.X := 1
(我知道 - 我正常使用try,最后除外)
我现在将切换到Python,我的问题如下:
我想要一个带有主窗口(框架)的应用程序,您可以在其中调用多个可以包含表单的表单等等
我可以使用python和wxpython创建一个程序,其中主框架创建一个新框架并显示它 - 但我如何回来 - 以及如何引用父框架 - 如果可能的话!
来自mainform
Def OnButton1(self, event):
self.main2 = Frame2.create(None)
self.main2.Show()
self.Hide()
当我在main2完成后,我将返回到mainform - 它是隐藏的!!
我知道我可以使用对话框,但我需要一个正常的框架!! 我正在寻找的是一个小程序,其中有一个大型机 - 一个调用Frame(Frame1)的按钮,它有一个调用框架的按钮(Frame1A)
我是Python的新手,但已经在C,C ++,Pascal中创建了许多应用程序 我看了几乎所有的演示,但没有一个能给我一个提示!
此致 米克
答案 0 :(得分:1)
好奇,为什么不能使用对话框?
无论如何,一个简单的解决方案是为Frame2的构造函数提供一个回调函数,当Frame2即将关闭时调用它。
class Frame2(wx.wxFrame):
def __init__(self, parent, callback, ...)
wx.wxFrame(self, parent)
self._callback = callback
self.bind(wx.EVT_CLOSE, self.OnClose(), self)
def OnClose():
self.Destroy()
self._callback()
class Frame1(...):
...
def OnButton1(self, event):
self.main2 = Frame2(self, self.OnButton1Callback)
self.main2.Show()
self.Hide()
def OnButton1Callback(self)
self.Show()
...
上面的代码只是一个提示,从未经过测试!
答案 1 :(得分:1)
有几种方法可以获得对主框架的引用。创建辅助帧时,可以将它们传递给None或父级。如果您将主框架作为父框架传递,那么您可以轻松地引用它。
或者,你可以这样做:
topFrame = wx.GetTopLevelParent()
至于显示辅助框架并隐藏主框架,我所做的是使用Pubsub。当我打开辅助框架时,我隐藏了主框架。当我关闭辅助帧时,它会向被捕获的隐藏主帧发送pubsub消息,并重新显示主帧。
wxPython wiki上有很多pubsub示例。还有我写的这篇文章:
http://www.blog.pythonlibrary.org/2010/06/27/wxpython-and-pubsub-a-simple-tutorial/
希望有所帮助!