Asammdf GUIの再利用(2)

Asammdfの問題ではなく、Pythonの仕様上の制限として、
自作のパッケージは呼び出し元の階層より上の階層のパッケージへのアクセスが許可されていないそうです。

このため、積極的に、Asammdfのパッケージを再利用することを考慮すると、
メンテナンス性も含め、階層構造をAsammdfのパッケージに沿って設定していくのが望ましいようです。

従いまして、Asammdf GUIの再利用(1)で紹介した、”GUIメインウィンドウを表示する”のみを実現する、
サンプルプログラムは下記のように、再構成する必要があります。

まず、必要なコードの階層構成は下記の通りとなります。

¥GUI_SAMPLE1がこのプロジェクトのフォルダーになります。
¥GUI_SAMPLE1¥gui¥GUI_Sample.pyがGUIプログラムのメインプログラム
¥GUI_SAMPLE1¥gui¥widgets¥GUI_Main.pyがGUIのメインルーチン
¥GUI_SAMPLE1¥gui¥ui¥main_window.pyが作成したUI(asammdfguiからのコピー)
¥GUI_SAMPLE1¥gui¥ui¥resource_rc.py(asammdfguiからのコピー)

となります。

こちらが、メインのコードとなります。
メインのコードの階層より上の階層となる¥guiディレクトリーのパッケージへの参照が必要となるため、
“sys.path.append”を用いて、Python環境にルートディレクトリの情報を追加してます。
print文は、どこの階層がルートとして追加されたのかを確認するために付与したものなので、なくても問題ありません。

つづいて、こちらが¥gui¥widgetsに置かれた、”GUI_Main.py”となります。

以上で、自作の”GUI_Sapmple.py”から、自作の”GUI_Main.py”を呼び出し、
各種asammdfパッケージを利用できる、プログラムのベースが準備できたことになります。

プログラムの実行元より、上位階層へのアクセスができないという、
Pythonの言語的仕様の制限は、特段メリットなども無い様には思われるのですが、
何か背景があるのでしょうかね?

私には、単に厄介な制限にしか思えないのですが…

これで、やっと次回からは、”GUI_Main.py”にコードを追加して、
asammdfgui の簡易版(最低限の機能のみを実装したもの)の作成を進めていくことで、
asammdfの理解を深めていきたいと思います。

 

 

おすすめ

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください