2011-06-22 14 views
1

私はこの質問をしましたが、あまりうまく策定されていませんでした。2つのwxpythonタブの間で変数を共有しています

両方のpythonに初心者として

persistence of objects in python

、およびGUIは、私はPythonのファイルの数が含まれている大規模なプロジェクトを持っている

をプログラミングします。ファイルa.pyは私のpython 2.5

ファイルb.pyとc.pyを使用していますfobjectと呼ばれるクラスがパラメータとしてfobjectのオブジェクトを持ってBProjectとCProjectと呼ばれるクラスを持って定義しています。これらはwx pythonベースのプログラムのページです。

Iはb.py.に(c.pyで定義)インポートCProjectを使用して含まれています私はwxのpythonのGUIを使用して記入するCProjectのリストを持っています。次にBProjectで定義されたBRun関数を呼び出します。この関数はCProjectでCRun関数を内部的に呼び出します。 c.pyで。私はリストが、リストを操作したい。この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 

ファイルb.py

CPython.OnIntRunが、それは

ことshould'ntときself.IntListが空であると呼ばれている
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() 

答えて

1

私は非常によくこれを以下ではないんだけど、通常はあなたがクラスをインスタンス化する際にデータを渡す必要があります。それ以外の場合は、PubSubを使用してクラス間で情報を渡すことも、単純なローカルWebサーバーを作成して、各タブで定期的に新しいデータをチェックして更新することもできます。

+0

私は、ウェブサーバの作成が以上このアプリケーションのために殺すだろうと信じています。このアプリケーションは、ネットワークアクセスがなくても多数のPCに個別にインストールする必要があります。このアプリケーションは当社のボードと相互作用します。 –

+0

PythonのソケットモジュールSimpleHTTPServerまたはSimpleXMLRPCServerを使用して、メモリにサーバーを作成します。私は、Apacheやそのようなものを読み込むことについて話しているわけではありません。 –

+0

+1提案するPubsub – volting

0

fObjectがbProjectとcProjectへの参照を保持している場合は、fObjectにsend_to_c(msg)関数を書き込むことができず、bProjectから呼び出すことができます(逆も同様)。

+0

残念ながら、fObjectはa.pyで定義されており、多くのプラットフォームに共通しているため、変更できません。 –

+0

したがって 'class gObject(fObject)'(fObjectから継承)を作成し、関数をgObjectに追加してください! – jozzas

関連する問題