完成イメージ
画面にdicomファイルをドラッグアンドドロップした際にdicomファイルの画像を表示し、タグを表示するようなプログラムを作りたい
プログラムを作成
powershellを経由しないとdicomファイルをウィンドウにドラッグアンドドロップできないのでps1ファイルを作成
excute_python.ps1
python .\dicomFileReader.py
dicomFileReader.py
from tkinter import *
from tkinterdnd2 import *
from matplotlib import pyplot as plt
import pydicom
def text_view(event):
# テキストを初期化
textarea.delete("1.0","end")
try:
# dicomファイルを読み込み
ds = pydicom.dcmread(event.data,force=True)
# 画像を表示するためにdicomファイルを読み込み
cr = pydicom.read_file(event.data)
# dicomファイルの情報をテキストウィジェットに表示
textarea.insert("end", ds)
# 画像を表示
plt.imshow(cr.pixel_array, cmap = "gray")
plt.show(block=False) # block=Falseを指定しないとドラッグ状態が解除されない
except pydicom.errors.InvalidDicomError:
# dicomファイルが読み込めない場合
textarea.insert("end", "dicomファイルの情報を読み込めませんでした。")
# メインウィンドウの生成
root = TkinterDnD.Tk()
root.title('DICOMファイルリーダー')
root.geometry('800x500')
root.config(bg='#66ffff')
# フレームウィジェットの生成
frame = Frame(root)
# テキストウィジェットの生成
textarea = Text(frame, height=500, width=800, font=("", "12", "")) # フォントの大きさを調整
textarea.drop_target_register(DND_FILES)
textarea.dnd_bind('<<Drop>>', text_view)
textarea.insert("end", 'DICOMファイルをここにドラッグ&ドロップしてください。タグ情報と画像が表示されます。')
# スクロールバーの生成
scroll = Scrollbar(frame, orient=VERTICAL)
textarea.configure(yscrollcommand=scroll.set)
scroll.config(command=textarea.yview)
# ウィジェットの配置
frame.pack()
textarea.pack(side=LEFT)
scroll.pack(side=RIGHT, fill=Y)
root.mainloop()