【问题标题】:"Inception" situation with wxPythonwxPython的“初始”情况
【发布时间】:2012-03-02 22:52:54
【问题描述】:

标题很有趣,我知道。就像电影《盗梦空间》中的情景。梦中梦中。 大家好,我正在使用 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()

我只是想知道这种事情可能吗? 还是有更好更简单的方法?

【问题讨论】:

    标签: python wxpython


    【解决方案1】:

    如果还有这样的麻烦,我找到了一些方法...... 首先,您不需要为此使用 ID ......更简单的方法是 创建不同的面板...... 当你想隐藏一个时,你可以简单地做

    panelname.Hide()  
    

    当你想展示另一个时,

    panelname.Show() # Or this also works (event.GetEventObject().GetParent().Show()\Hide())
    

    注意:1) 请记住为所有小部件(按钮等)提供单独的 ID(或 -1 可以)。 2)您也可以使用函数调用创建重叠面板。(示例 - 单击按钮后)。 3)您也可以创建一个公共面板(父面板),然后在 init 正文中创建子面板。然后您可以简单地在绑定的函数中隐藏和显示这些面板(可能带有按钮等)。

    我这样解决了我的问题。不需要使用 GetId() 。但可能还有其他方法。因此,如果您有其他想法,请分享。我希望有一天这对某人有所帮助...谢谢大家。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-09
      • 2014-08-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多