Challenge programming

Python

「画像ファイルを読み込む」アプリを作る



ボタンをクリックすると画像を選ぶダイアログが表示されて・・・



画像をクリックすると読み込まれる。


では、早速作ってみよう! でもその前に・・・

ライブラリのインストール

ファイルダイアログは標準ライブラリの「tkinter.filedialog」モジュールを使えば表示することができる。しかし、画像データを扱う機能は、標準ライブラリにはないので外部ライブラリを利用する必要があります。

外部ライブラリには「pillow」という画像を扱えるライブラリがあるので、これを利用します。

外部ライブラリのインストールには、コマンドプロンプトを開いて、「pip」というコマンドを実行して行います。(macOSでは、ターミナルを開いてpip3というコマンドを実行します)

➀コマンドプロンプトを起動させます。


>の後にpip install pillowと入力します。

インストールが完了しました。


さあ、これで画像を扱えるようになったので、進めていきます。

下記のように入力してみましょう。


簡単な解説

モジュールのインポート import tkinter as tk
import tkinter.filedialog as fd   
import PIL.Image 
import PIL.ImageTk    
     

ここでのアプリは、ウインドウを表示する[tkinter],ファイルダイアログを使うための[tkinter.filedialog],画像を扱う[PIL.Image],画像をtkinterで作った画面上に表示させるための[PIL.ImageTk]の4つのモジュールを使って作ります。


画像を表示する関数 def dispPhoto(path):        
     newImage = PIL.Image.open(path).resize((300,300))
     imageData = PIL.ImageTk.PhotoImage(newImage) 
     imageLabel.configure(image = imageData)
     imageLabel.image = imageData          

画像を表示する関数です。まず、画像ファイルを開いて300ピクセルx300ピクセルにリサイズする。次はその画像を「ラベルに表示できるデータ」に変換する。そしてラベルに表示させる。


ファイルを開く関数 def openFile():
     fpath = fd.askopenfilename()  
     if fpath:
         dispPhoto(fpath)      

fd.askopenfilename()はファイルダイアログを出す関数になります。その次のif fpathにてファイル名が入っていたら、その画像を開くdispPhoto(path)を実行する。しかしなかったら何もしない。


画面を作る部分 root = tk.Tk()
root.geometry("400x350")

btn = tk.Button(text="OPEN FILE", command = openFile)  
imageLabel = tk.Label()        
btn.pack()           
imageLabel.pack()    
tk.mainloop()                      

最初の2行で画面を作り、ボタンがクリックされたらファイルダイアログを開く関数を実行します。imageLabelで画面表示用のラベルを作り、ボタン、ラベルを配置して、mianloopで作ったウインドウを表示してます。


*尚、ここではバージョン「Python 3.6.1」を使用しています。

この本を参考に学び、完成させることができました。しかし、ここではプログラミング初心者の私が詳しく解説することは、おこがましく、難しく出来ません(ToT)
その点、この本では丁寧な解説が載っていますので、解説とともにコードを書き、完成させればより深く学ぶことができます(^.^)、実際、初心者の私でもわかりやすかったです。身に付け消えないスキルが2,000円程ならコスパよく、買っておいてよかったと満足してます。



もっと深く学びたい人にはこちらもどうぞ。| For those who want to learn more deeply, this is also recommended.

キャリアアップに必要なスキルを取得しよう。| Get the skills you need to advance your career.

Pythonエンジニア育成推進協会公式認定スクール | Officially certified school of Python Engineer Development Promotion Association.

ぺージの先頭に戻る(Return to top of page)


©2020年9月 Challenge programming

プライバシーポリシー