口頭での説明は残念です。サブパッケージをインポートするときにwxPythonがアプリケーションを2回起動する
私は、garlicsimwx
というパッケージに入っているapplicationwindow.py
というファイルにwxPythonアプリケーションを持っています。上記のファイルを起動してアプリを起動すると、すべてうまく動作します。しかし、ファイルrundemo.py
を、アプリケーションを実行するgarlicsimwx
パッケージを含むフォルダに作成しました。しかし、rundemo.py
を使用すると、メインwx.Frame
がサブパッケージgarlicsimwx
、つまりsimulations.life
をインポートしたときに何らかの理由でアプリケーションの新しいインスタンスが作成されます(つまり、新しい同一のウィンドウがポップアウトされます)。
私はコマンドを1つずつ実行しようとしましたが、サブパッケージをインポートした後でしかバグが起きませんでしたが、import
ステートメントは直接それを引き起こしません。制御がPyApp.MainLoop
に戻るときだけ、2番目のウィンドウが開きます。
どうすればいいですか?
公正な推測フランク、しかし、私は 'if __name __ == '__ main __''ビットを持っています。これは私の 'main()'関数を呼び出します。実際、この2つの行をコメントアウトして、 'rundemo.py'から' main() 'を呼び出しても、このバグが起こります。 –
@ cool-RR:if __name__ == "__main__"があるかもしれませんが、インポート時に何らかの関数呼び出しもあります。あなたはあなたのスクリプトを通過し、それが完全にdefとclassのものであることを保証しなければなりません。 –
@フランク:申し訳ありませんが、初めてPythonがモジュールを実行するのは初めてですか? – Joril