python - wxPython 的 "Inception"情况

标签 python wxpython

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

相关文章:

python - 从 App Engine 数据存储到 JSON 的分层数据输出?

python - wx.lib.pubsub : How to change the value in a timer

python - wxPython:在标签按下时切换文本控制焦点

python - 如何解决 Django 中的模块名称冲突?

Python tkinter : How can I ensure only ONE child window is created onclick and not a new window every time the button is clicked?

python - 这个代码片段是遗传算法吗?

python - 如何在python中迭代目录中的子目录并统计子目录中的文件数

python - 将坐标绘制为矩阵 matplotlib python

python - 最终用户的计算机上是否需要 wxPython

python - wxPython 创建图像工具栏唯一窗口