разделение переменных между двумя вкладками wxpython

1

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

сохранение объектов в python

Как новичок для программирования на языке python и GUI

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

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

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

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

Теги:
oop
wxpython

2 ответа

1

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

  • 0
    Я считаю, что создание веб-сервера было бы чрезмерным убийством для этого приложения. Это приложение должно быть установлено индивидуально на многих ПК, даже без доступа к сети, а также на стороне клиента, чтобы тренировать наше программное обеспечение. Это приложение взаимодействует с нашей доской.
  • 0
    Вы должны создать сервер в памяти, используя модуль сокетов Python, SimpleHTTPServer или SimpleXMLRPCServer. Я не говорю о загрузке apache или чего-то подобного.
Показать ещё 1 комментарий
0

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

  • 0
    К сожалению, поскольку fObject определен в a.py и является общим для многих платформ, и, следовательно, я не могу его изменить.
  • 0
    поэтому создайте class gObject(fObject) (наследует от fObject) и добавьте свои функции в gObject!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню