разделение переменных между двумя вкладками wxpython - PullRequest
1 голос
/ 22 июня 2011

Я задавал этот вопрос, но он был не очень хорошо сформулирован.

постоянство объектов в питоне

Как новичок в программировании на Python и GUI

У меня большой проект, который содержит несколько файлов Python. Файл a.py определяет класс с именем fobject. Я использую python 2.5

.

В файлах b.py и c.py есть классы с именами BProject и CProject, которые имеют объект fobject в качестве параметра. Это страницы в программе на основе Python wx.

Я включил использование импорта CProject (определено в c.py) в b.py. У меня есть список в CProject, который я заполняю, используя графический интерфейс wx python. Затем я вызываю функцию BRun, определенную в BProject, которая внутренне вызывает функцию CRun в CProject, т.е. в год

В этом CRun я хочу манипулировать списком, но в данный момент список всегда пуст. Почему это так?

Что я должен сделать, учитывая ограничение: я не могу ничего изменить a.py, в котором определен fobject?

файл: 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

файл b.py

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 пуст, когда он не должен быть

Ответы [ 2 ]

1 голос
/ 22 июня 2011

Я не очень хорошо следую этому, но обычно вам нужно передавать данные, когда вы создаете экземпляр класса.В противном случае вы можете использовать PubSub для передачи информации между классами или создать простой локальный веб-сервер, который на каждой вкладке периодически проверяет наличие новых данных и обновляет себя.

0 голосов
/ 23 июня 2011

Если ваш fObject поддерживает ссылки на bProject и cProject, не могли бы вы написать send_to_c(msg) функцию в вашем fObject, которую вы могли бы вызывать из вашего bProject (и наоборот)?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...