标题很有趣,我知道。就像电影《盗梦空间》中的情景。梦中梦中梦。 大家好,我正在使用 wxpython 制作一个应用程序。 我想实现这样的目标。(这只是问题的想法)
func1(self,event):
some widgets added
func2
func2(self,event):
remove previous widgets (by using event.GetEventObject().GetParent().Hide())
add new ones
func3
func3(self,event):
remove widgets added in func2
recall widgets added in func1 (event.GetEventObject().GetParent().Show())
我在里面遍历了太多,比如从函数跳到其他嵌套3次 我无法跟踪事件的功能。
如果我用
存储事件的 ID(在列表中) event.GetId()
在遍历每个函数时,有没有一种方法可以使用这些 ID 替换
event.GetEventObject().GetParent().Show()
event.GetEventObject().GetParent().Hide()
与
id1.GetEventObject().GetParent().Hide()
id2.GetEventObject().GetParent().Show()
我只想知道这种事情有可能吗? 或者有更好更简单的方法吗?
最佳答案
如果还有人遇到这样的麻烦,我找到了一些方法...... 首先,你不需要为此使用 ID.....更简单的方法是 创建不同的面板......... 当你想隐藏一个时,你可以简单地做
panelname.Hide()
当你想显示另一个时,
panelname.Show() # Or this also works (event.GetEventObject().GetParent().Show()\Hide())
注意:1) 请记住为所有小部件(按钮等)提供单独的 ID(或 -1 即可)。 2) 您也可以通过函数调用创建重叠面板。(示例 - 单击按钮后)。 3)您还可以创建一个公共(public)面板(父面板),然后在 init 主体中创建子面板。然后您可以简单地在绑定(bind)的函数中隐藏和显示这些面板(可能带有按钮等)。
我这样解决了我的问题。不需要使用 GetId() 。但可能还有其他方法。如果您有其他想法,请分享。我希望有一天这对某人有所帮助...谢谢大家。
关于python - wxPython 的 "Inception"情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9541498/