画像選択のプログラムを使いやすく!!

DICOMタグを取得するのも、画像処理をするのもまずはファイル選択することから始まります。


一番簡単な方法は、プログラムの中でファイルを指定することなのですが、それでは他のファイルを処理したいときにいちいちコードのファイル名を書き換えなければならないし、保存しているフォルダが違うと余計に面倒ですよね。


それを解決するために以前の記事で「ファイルを一つ選択する方法」「ファイルを複数選択する方法」「フォルダ内のファイルを一括選択する方法」と3回にわたって記事にしてきました。


いずれも、一つのファイル内にコードを記述していたわけですが、コードが長くなってくると目的のコードを探すのが大変になってしまいます。

そこで、今回はファイル選択の部分だけを一つのプログラム(モジュール)として作成し、他のプログラムから呼び出す方法を記載していきたいと思います。



ファイル名を「fileselect.py」として作成します。

ひとまず前3回分のコードを一つにコピペしてみました。

ここで目に着くところが、import~というところが複数出てきていますのでこれを一番先頭に持ってきて、重複している部分を削除してしまいましょう。


そうすると、以下のようになります。

だいぶスッキリとしました。しかし、

def 〇 〇 〇 〇 ():

で始まる関数名がすべて同じになってしまっていますので、これを変更しましょう。

ファイルを一つ選択する場合は、single_fileselect、複数選択するときはmulti_fileselect、フォルダで選択する場合はfolder_fileselectと変更しましょう。


これで完成です。

それでは、実際に使用してみたいと思います。

前回の「マウスを使って画像を切り替える」のコードを使って説明します。

前回のコードは以下になります。

まず、23行目から、29行目のコードは新しく作成したfileselect.pyに記載してありますので削除します。

あと、3行目と4行目のimport文はファイルを選択するダイアログを開く際に必要なライブラリでした。このライブラリはfileselect.pyの中で呼び出しをしますので必要なくなりましたので削除します。

その代わり、fileselect.pyを使用しますので

import fileselect

の一文を追加します。これで、 fileselect.py を使用することができます。

最後に、42行目

filenames = fileselect()

の文をfileselect.pyの中の使用したい関数名を指定すればいいので例えば一つのファイルを選択したいのであれば

filenames = fileselect.single_fileselect()

複数のファイルであれば

filenames = fileselect.multi_fileselect()

フォルダごと選択であれば

filenames = fileselect.folder_fileselect()

とすることで使用することができます。

例えば、複数ファイルでやってみるとコードは以下となります。

少し、コードがすっきりとしましたね。

マウスイベントも同様に別ファイルとして作ってしまえば、かなりすっきりとしますので試してみてください。

それでは。お疲れ様でした。


環境

  • windows10
  • python3.6.1
  • Anaconda custom(64-bit)
  • PyCharm2020.2(Communication Edition)

広告
上新電機 パソコン買取サービス
  • このエントリーをはてなブックマークに追加