2010-11-23 22 views
0

私が作成しているwxPythonアプリケーションでは、プログラムが通過するサイクル数をカウントする変数が必要です。私は自分のクラスで定義されている複数のパネルを持っています。フレームクラスは、すべてのインスタンスを作成し、ユーザーがクリックするボタンに応じてパネルを表示または非表示にします。大部分のプログラムでは、「ゲーム」は3つのパネル(p1、p2、p3と呼ぶ)を通って回転します。 p3に達すると、一定の時間が経過するとp1 * \に戻ります。また、プログラムの実行中に他のデータを追跡します。私の問題は、このデータをどのように追跡するのか分かりません。私はGetParent()メソッドを使用してすべてのパネルにアクセス可能であると推測される私のフレームクラスにクラス変数を持たせようとしましたが、私はそのアプローチには限界がありました。私もグローバル変数を使用しようとしましたが、これもまた行き詰まりに終わりました。どのように私がこれを達成することができるかについての情報は非常に高く評価されるだろう。wxPythonグローバルカウンタ

答えて

0

サブプロセスを生成しない限り、グローバル変数が機能しない理由は考えられません。グローバルを宣言しなければならないようにするには、dictのようなオブジェクトに入れます。


myglobals = {'count': 0} 
class whatever: 
def blather(): 
    myglobals['count'] += 1 
+0

グローバルを1つのパネルから更新すると、別のパネルには移動しません。私のパネルの1つでは、ユーザーがボタンを押したときにカウントを更新し、別のパネルでは現在のカウントにアクセスするとします。私がそれをするとき、私はカウントがセットされた最初の数だけを得る。しかし、増分を行っているパネルでは、カウントが何であるかを見ることができます。なぜこのようなことが起きるかについての考えはありますか? (うまくいけば私はそれを正しく説明しました) – grassclip

+0

はい、wxPythonはサブプロセス内の各パネルを実行している可能性があります。次に、プロセス間通信を行う必要があります。オフハンドではそれがうまくいくとは思わない。共有メモリ、おそらく。 –

+0

ああ問題を見つけました。私は欲しいものを表現するために静的なテキストを使用しています。つまり、テキストは静的なものです。私は、パネルを再表示するたびにテキストを更新する方法を見つけなければなりません。また、私は間違ってグローバル変数を実装していたので、私はdict構造について知らなかったので、あなたの助けに感謝します。とても有難い。 – grassclip

関連する問題