質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

2回答

4206閲覧

python 1年生 画像を読み込みファイル表示ができません!

Risekorise

総合スコア1

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/10/10 00:21

前提・実現したいこと

pip listより画像を読み込みファイルダイアログを通じて画像を表示させたい。

※「python1年生」P135のChapter4のLESSON18を行おうとしています。

発生している問題・エラーメッセージ

エラーメッセージ

「ファイルを開く」ボタンを押しても「ファイルダイアログ」が現れません。
代わりにC:\Users\User\Documents\python を開きに行ってしまいます。
画像も表示、選択ができません。

※pillowのインストールはコマンドプロンプトから実施済で以下のメッセージが表示され
ますのでインストール済。
C:\Users\User>pip install pillow
Requirement already satisfied: pillow in c:\users\user\appdata\local\programs\python\python36-32\lib\site-packages (8.3.2)

該当のソースコード

ソースコード import tkinter as tk import tkinter.filedialog as fd import PIL.Image import PIL.ImageTk def dispPhoto(path): #画像を読み込む newImage = PIL.Image.open(path).resize((300,300)) #そのイメージをラベルに表示する imageData = PIL.ImageTk.PhotoImage(newImage) imageLabel.configure(image = imageData) imageLabel.image = imageData def openFile(): fpath = fd.askopenfilename() if fpath: dispPhoto(fpath) root = tk.Tk() root.geometry("400x350") btn = tk.Button(text="ファイルを開く", command = openFile) imageLabel = tk.Label() btn.pack() imageLabel.pack() tk.mainloop()

試したこと

ネットで検索してスペルミス等が原因で表示されないケースがあるとのことでしたので
このようなミスがないかは確認いたしました。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

pythonのバージョンは3.6です。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/10/10 00:26

手元のPCではちゃんとダイアログが出て画像を開いて読み込めました。ダイアログが開く場所は恐らく「最後に開いた場所」だと思います。
Risekorise

2021/10/10 00:35

有難うございます。確認してみます。
cx20

2021/10/10 01:07 編集

書籍のサンプルコードダウンロードして確認してみましたが、特段、間違ってはなさそうでした。 https://www.shoeisha.co.jp/book/download/9784798153193/detail fourteenlength さんの言うように「最後に開いた場所」が表示されたのだと思います。
Risekorise

2021/10/10 01:29

確認有難うございました。
guest

回答2

0

askopenfilename() の引数にはオプションとして「表示するファイル拡張子」や「初期フォルダ」といったパラメータを指定することができます。

例えば
・表示するファイル拡張子として「*.jpg *.png *.gif」
・初期フォルダとして「カレントディレクトリ」
を指定する場合、下記のようなコードになります。

python

1import os # 先頭に追加 2 3def openFile(): 4 fTyp = [("画像ファイル", "*.jpg *.png *.gif")] 5 iDir = "./" 6 fpath = fd.askopenfilename(filetypes=fTyp, initialdir=iDir) 7 if fpath: 8 dispPhoto(fpath)

■ 変更前
変更前の実行結果

■ 変更後
変更後の実行結果

<参考>
■ 【Python/tkinter】ファイルを開くダイアログボックスの表示
https://imagingsolution.net/program/python/tkinter/openfiledialog/

投稿2021/10/10 01:16

編集2021/10/10 01:34
cx20

総合スコア4632

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Risekorise

2021/10/10 02:04

回答有難うございます。アドバイスいただいコードを入れて RUNさせました。 C:\Users\User\Documents\python を開きに行き「*.jpg *.png *.gif」のファイルを探しに行くところまでは行きました が、やはり「Python 1年生」に記載されている画像タイトルcar.jpgのファイルは 表示されませんでした。何かちょっとしたことがおかしいのでしょうかね?
cx20

2021/10/10 02:14

すみません、状況が良く分かりません。現状、どういう状況でしょうか? a) ファイルを開くダイアログに「car.jpg」が表示されない b) ファイルを開くダイアログで「car.jpg」を選択したが、画像が読み込まれない c) どちらでもない。
Rwight

2021/10/10 04:26 編集

多分ですが、 質問者さんは、「car.jpg」の場所が分からない。。。と自分は判断しました。 質問者さんは、その自分は実際に見ていないので分かりませんが、 多分そのサンプルファイル場所じゃなくて、違うファイルの場所を探しても無いみたいな感じと思います。
cx20

2021/10/10 04:58

Rwight さん、コメントありがとうございます。 > 質問者さんは、「car.jpg」の場所が分からない。。。と自分は判断しました。 そうですね。ご本人に聞かないと分からないですが、なんとなくですが「C:\Users\User\Documents\python」フォルダが表示されるが「car.jpg」が表示されない、という感じでしょうか。 <対応方法> サンプルファイル「car.jpg」は、別途、出版社のダウンロードサイトから入手する必要があります。 ■ ホーム > 書籍 > Python 1年生 体験してわかる!会話でまなべる!プログラミングのしくみ > ダウンロード https://www.shoeisha.co.jp/book/download/9784798153193/detail ダウンロードファイル「python_1nensei_sample.zip」の中の「chapter4\car.jpg」がそれです。 こちらを解凍し「C:\Users\User\Documents\python」に配置すれば「ファイルを開くダイアログ」で表示されるようになるかと思います。
Rwight

2021/10/10 05:35 編集

cx20 さん、対処方法を詳しく説明していただき有難うございます。 (cx20さん) > 「car.jpg」が表示されない、という感じでしょうか。 は多分ここかなって思った場所がここです。 (1つ目のコメントで...) (質問者さん) > C:\Users\User\Documents\python まではいけたけれど、 「Python 1年生」に記載されている画像タイトル「car.jpg」のファイルは表示されませんでした。 と書いていたので、自分はその場所に「car.jpg」は無いと判断をしました。 なので cx20 の対処方法を参考にすればこの問題は解決すると思います。 なので質問者さんはこの対策方法でやってみて下さい。 cx20 さん、詳しい対処方法をを質問者に分かりやすくしていただき有難うございます。
guest

0

質問者の依頼にお答えを致します。
まず
ソースコードはそのままでOKです。
一応記載しておきます。

Python

1import tkinter as tk 2import tkinter.filedialog as fd 3import PIL.Image 4import PIL.ImageTk 5 6def dispPhoto(path): 7 #画像を読み込む 8 newImage = PIL.Image.open(path).resize((300,300)) 9 #そのイメージをラベルに表示する 10 imageData = PIL.ImageTk.PhotoImage(newImage) 11 imageLabel.configure(image = imageData) 12 imageLabel.image = imageData 13 14def openFile(): 15 fpath = fd.askopenfilename() 16 17 if fpath: 18 dispPhoto(fpath) 19 20root = tk.Tk() 21root.geometry("400x350") 22 23btn = tk.Button(text="ファイルを開く", command = openFile) 24imageLabel = tk.Label() 25btn.pack() 26imageLabel.pack() 27tk.mainloop()

そのあとに「Run」をした後に画像1のような画面になると思います。
画像1
tkが出てくる
「ファイルを開く」をクリックした後に「car.jpg」を開くをクリックした後に開くをクリックしましょう。
その時の画像が画像2です。
画像2
ファイル選択中
そしたら画像3のような画面になります。
画像3
結果

そもそも 「car.jpg」がファイルを探しても無い場合...

サンプルファイルをダウンロードしていると思いますが、
そのフォルダーの中に「car.jpg」がありますのでそのをコピーをすればいいと思います。
Python_1nensei_sample => Chapter4 => car.jpg にあります。
画像4

何かこの回答の文章が変な所があったり、分からない場所がありましたら、ご質問を宜しくお願い致します。

投稿2021/10/10 04:11

編集2021/10/10 09:38
Rwight

総合スコア63

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Risekorise

2021/10/10 08:06

自身のPCのダウンロードデータに存在していた「Python_1nensei_sample」を ドキュメントファイルにコピーしてそこでChapter4 => car.jpg で 直接データにたどり着き開くを押してcar.jpgの画像を開くことができました。 有難うございました! 画像2に表示していただいたようなインターフェイスのファイルダイアログは表示されない のですが取り合えず表示したいデータを表示するところまではできました。一歩前進できました。
Rwight

2021/10/10 09:36 編集

とりあえず 一歩前進出来ただけ良かったです。 最終的に画像3のような風に表示されていたらその所は終了です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問