我对如何在应用程序中获取顶部框架有点困惑。我以平常的方式开始我的申请
class AppFrame(ClientGUI.MyFrame): #ClientGUI.MyFrame generated by wxformbuilder.
def __init__(self):
# create some panels.
# Create some object classes that invoke objects of other classes.
# .. do other stuff ...
if __name__ == '__main__':
app = wx.App(0)
frame = AppFrame()
frame.Show()
app.MainLoop()
鉴于我有一个深度嵌套的类调用序列,我希望调用层次结构底部的一个对象能够访问应用程序中的某个面板(基本上将一些 gui 内容放入该面板中)。 我能想到的一种方法是将应用程序对象(“self”)作为参数包含到我的对象调用序列中,以便最后一个对象可以访问应用程序对象。 但这似乎相当复杂,因为所有中间对象都不需要访问应用程序。
有没有一种干净的方法来访问应用程序对象? 另外,我到底想访问什么——“框架”对象还是“应用程序”对象?我不确定这两个对象之间的区别。
我通常不建议这样做,但你想要的方法可能是:
topFrame = wx.GetTopLevelParent()
如果需要类间通信,我通常使用PubSub。无论如何,我希望能有所帮助!
添加@Mike Driscoll 的答案,
topFrame = wx.GetTopLevelParent(window)
.
该函数接受一个参数,
window
(我们想要其顶级父对象的对象)。