如何将wxPython控件移动到另一帧

如何将wxPython控件移动到另一帧,wxpython,Wxpython,我的主wxPython应用程序wx.Frame目前充满了按钮和文本字段以及主应用程序显示区域。所有事件处理程序和UI代码都包含在MainFrame类中,该类将命令传递给控件类 我想将其中一些控件从大型机移动到一个可以隐藏的新的辅助框架。我创建了SecondaryFrame的一个实例,然后使用一个菜单项来显示和隐藏它 我似乎有两种实施选择: 将所有控件创建和处理程序代码移到SecondaryFrame类中 创建一个空白的SecondaryFrame,并从大型机内部填充它,保留所有处理程序,使控件成

我的主wxPython应用程序wx.Frame目前充满了按钮和文本字段以及主应用程序显示区域。所有事件处理程序和UI代码都包含在MainFrame类中,该类将命令传递给控件类

我想将其中一些控件从大型机移动到一个可以隐藏的新的辅助框架。我创建了SecondaryFrame的一个实例,然后使用一个菜单项来显示和隐藏它

我似乎有两种实施选择:

  • 将所有控件创建和处理程序代码移到SecondaryFrame类中
  • 创建一个空白的SecondaryFrame,并从大型机内部填充它,保留所有处理程序,使控件成为大型机的成员,而不是SecondaryFrame
  • 两者的结合

  • 似乎所有这些选项都需要对我的代码进行重大重构。我是否缺少一种更明显的方法来将已经运行的控件移动到一个新的框架中?

    每个框架都需要有自己的小部件。如果出于某种原因希望两个框架具有相同的控件,那么我将创建一个基类框架,并让其他两个从中继承

    处理程序代码本身可以保存在控制器模块中。然后导入控制器并执行如下操作:

    mySecondaryFramesBtn.Bind(wx.EVT_BUTTON, controller.btnHandler)
    
    这样,可以将第一帧和第二帧中的按钮绑定到同一个处理程序

    您还可以研究模型-视图-控制器的概念。您可以通过以下链接了解更多信息:


    每个框架都需要有自己的小部件。如果出于某种原因希望两个框架具有相同的控件,那么我将创建一个基类框架,并让其他两个从中继承

    处理程序代码本身可以保存在控制器模块中。然后导入控制器并执行如下操作:

    mySecondaryFramesBtn.Bind(wx.EVT_BUTTON, controller.btnHandler)
    
    这样,可以将第一帧和第二帧中的按钮绑定到同一个处理程序

    您还可以研究模型-视图-控制器的概念。您可以通过以下链接了解更多信息:


    该项目主要是MVC。我确实有一个控制器类,但我试图使它与GUI无关。所有事件处理程序和GUI相关的控制代码都在MainFrame类中。将处理程序与控件放在不同的类中的问题是,某些处理程序需要访问控件本身,例如在文本控件和复选框的情况下。我不认为有一种干净的方法可以让一个类中的处理程序从另一个类中的控件获取数据。它可以工作,但感觉很邋遢。我不知道你想在帧之间传递数据。就我个人而言,我使用pubsub。它使得在类之间传递数据变得非常容易。该项目主要是MVC。我确实有一个控制器类,但我试图使它与GUI无关。所有事件处理程序和GUI相关的控制代码都在MainFrame类中。将处理程序与控件放在不同的类中的问题是,某些处理程序需要访问控件本身,例如在文本控件和复选框的情况下。我不认为有一种干净的方法可以让一个类中的处理程序从另一个类中的控件获取数据。它可以工作,但感觉很邋遢。我不知道你想在帧之间传递数据。就我个人而言,我使用pubsub。它使得在类之间传递数据变得非常容易。