在两个wxpython选项卡之间共享变量

在两个wxpython选项卡之间共享变量,python,oop,wxpython,Python,Oop,Wxpython,我问过这个问题,但没有很好的表述 作为python和GUI编程的新手 我有一个包含许多python文件的大型项目。文件a.py定义了一个名为fobject的类,我正在使用python 2.5 文件b.py和c.py具有名为BProject和CProject的类,这些类的参数为fobject对象。这些是基于wx python的程序中的页面 我已经在b.py中包括了使用import CProject(在c.py中定义)。我在CProject中有一个列表,我使用wx python GUI填充它。接下

我问过这个问题,但没有很好的表述

作为python和GUI编程的新手

我有一个包含许多python文件的大型项目。文件a.py定义了一个名为fobject的类,我正在使用python 2.5

文件b.py和c.py具有名为BProject和CProject的类,这些类的参数为fobject对象。这些是基于wx python的程序中的页面

我已经在b.py中包括了使用import CProject(在c.py中定义)。我在CProject中有一个列表,我使用wx python GUI填充它。接下来,我调用BProject中定义的函数BRun,它在内部调用CProject中的CRun函数,即c.py中的CRun函数

在这个CRun中,我想操纵列表,但此时列表总是空的。为什么会这样

考虑到约束条件,我应该做什么?我不能更改定义了fobject的a.py中的任何内容

文件:c.py

def Instance(fObject):
    return test_page_CProject(fObject)


class CProject(object):

    def __init__(self, fObject):
        self.fObj = fObject
        self.IntList  =  []
        ##snip

    def  OnIntSelectBtnPress(self,parent):
        print ":self.IntList"
        print self.IntList
        self.listBoxIntSelect.InsertItems(self.IntList,0)
        print self.IntList

    def OnIntRun(self):
        IntLModeList = self.IntListIntMode
        #snip
def Instance(fObject):
    return BProject(fObject)

class BProject(object):

    def __init__(self, fObject):
        self.FObj = fObject
        #snip
        Object = __import__('CProject')
        #snip

        self.intObject = Object.Instance(self.FObj)
        self.intObject.OnIntRun()
文件b.py

def Instance(fObject):
    return test_page_CProject(fObject)


class CProject(object):

    def __init__(self, fObject):
        self.fObj = fObject
        self.IntList  =  []
        ##snip

    def  OnIntSelectBtnPress(self,parent):
        print ":self.IntList"
        print self.IntList
        self.listBoxIntSelect.InsertItems(self.IntList,0)
        print self.IntList

    def OnIntRun(self):
        IntLModeList = self.IntListIntMode
        #snip
def Instance(fObject):
    return BProject(fObject)

class BProject(object):

    def __init__(self, fObject):
        self.FObj = fObject
        #snip
        Object = __import__('CProject')
        #snip

        self.intObject = Object.Instance(self.FObj)
        self.intObject.OnIntRun()

当调用CPython.OnIntRun时,self.IntList是空的,但它不应该是

我不太明白这一点,但通常在实例化类时需要传入数据。否则,您可以使用PubSub在类之间传递信息,或者您可以创建一个简单的本地web服务器,每个选项卡定期检查新数据并自行更新。

我不是很了解这一点,但通常在实例化类时需要传递数据。否则,您可以使用PubSub在类之间传递信息,或者您可以创建一个简单的本地web服务器,每个选项卡定期检查新数据并自行更新。

如果您的fObject维护对bProject和cProject的引用,您不能在您的fObject中编写一个
发送到c(msg)
函数吗,您可以从bProject中调用(反之亦然)

如果您的fObject维护对bProject和cProject的引用,您能否在fObject中编写一个可以从bProject调用的
send_to_c(msg)
函数

我相信创建一个Web服务器对于这个应用程序来说是一个致命的打击。此应用程序需要在许多PC上单独安装,即使没有网络访问,也需要在客户端安装,以执行我们的h/w。此应用程序与我们的板交互。您可以使用Python的套接字模块SimpleHTTPServer或SimpleXMLRPCServer在内存中创建服务器。我不是说加载apache或类似的东西,我相信创建一个Web服务器对这个应用程序来说是一个致命的打击。此应用程序需要在许多PC上单独安装,即使没有网络访问,也需要在客户端安装,以执行我们的h/w。此应用程序与我们的板交互。您可以使用Python的套接字模块SimpleHTTPServer或SimpleXMLRPCServer在内存中创建服务器。我不是说加载apache或类似的东西。不幸的是,由于fObject是在a.py中定义的,并且在许多平台上是通用的,因此我无法修改它。因此,创建一个
类gObject(fObject)
(继承自fObject)并将您的函数添加到gObject!不幸的是,由于fObject是在a.py中定义的,并且对许多平台都是通用的,因此我无法修改它。因此,请创建一个
类gObject(fObject)
(继承自fObject)并将您的函数添加到gObject!