wxPython和在windows之间共享对象

wxPython和在windows之间共享对象,python,wxpython,Python,Wxpython,我使用python已经有一段时间了,我刚刚开始学习wxPython。在创建了一些小程序之后,我很难理解如何创建可以在对话框之间共享的对象 以下是一些代码作为示例(对于长度表示歉意-我已尝试修剪): 因此,我希望两个对话框都能访问gamePlayer对象。目前,我能想到的唯一方法是将gamePlayer对象创建为一个全局对象,但这些对象通常是不被接受的——有没有更好的方法 中有一种在事件绑定中传递对象的方法,但感觉不太正确 在这里,学习实现MVC模式是前进的方向吗 谢谢。您可以将游戏玩家对象作为另

我使用python已经有一段时间了,我刚刚开始学习wxPython。在创建了一些小程序之后,我很难理解如何创建可以在对话框之间共享的对象

以下是一些代码作为示例(对于长度表示歉意-我已尝试修剪):

因此,我希望两个对话框都能访问gamePlayer对象。目前,我能想到的唯一方法是将gamePlayer对象创建为一个全局对象,但这些对象通常是不被接受的——有没有更好的方法

中有一种在事件绑定中传递对象的方法,但感觉不太正确

在这里,学习实现MVC模式是前进的方向吗


谢谢。

您可以将游戏玩家对象作为另一个参数传递给
\uuuu init\uuuu

def __init__(self, parent, id, title, gamePlayer ):
    ...etc...
从长远来看,这并不理想

您应该将构建空面板与加载带有数据的面板分开。空面板是一回事,用模型中的数据填充它是不相关的

用数据填充一个框架是必须向您提供gamePlayer对象的地方,该对象将用于更新各种显示小部件

我建议您查看文档视图框架以获取这方面的指导。不幸的是,没有任何好的Python例子,所以从C++代码转换为Python可能会很混乱。 最终,您将拥有一个“文档”,它是正在显示的主要对象(“玩家”)。每个框架都是该文档的视图。

模型-视图-控制器(MVC)框架允许您通过控制器访问公共数据(模型)并在GUI(视图)中显示它。这里有一个很好的解释:

基本上,您可以通过不允许模型直接与视图对话,而是向控制器发布它所做的更改来避免混乱。然后,控制器适当地更新视图。同样,用于从gui上的控件更新模型。这样,模型和视图代码是独立的,并且它们与访问各自API的控制器代码绑定在一起

def __init__(self, parent, id, title, gamePlayer ):
    ...etc...