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

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

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

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

Python

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

Q&A

解決済

1回答

6798閲覧

python tkinterでの画像表示について<.gif>

makaroni

総合スコア24

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

Python

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

0グッド

0クリップ

投稿2018/12/01 05:37

編集2018/12/02 10:04

前提・実現したいこと

参考書を見ながら、
pythonのtkinterを使ってGUIを作成しています。
そこで、画像表示をさせたいのですがエラーがどうしても出てしまいます。

python

1img = tk.PhotoImage(file = 'python.gif') 2```私はこの部分に原因があると思っていますが...(間違っていたらすいません) 3 4最近はずっとこのエラーで停滞モードなので 5何卒ご教授よろしくお願いします。 6 7### 発生している問題・エラーメッセージ 8

Traceback (most recent call last):
File "C:\Python\test.py", line 16, in <module>
f = Frame()
File "C:\Python\test.py", line 10, in init
self.img = Tk.PhotoImage(file=CLOCK)
File "C:\Users\XXXX\AppData\Local\Programs\Python\Python37\lib\tkinter_init_.py", line 3545, in init
Image.init(self, 'photo', name, cnf, master, **kw)
File "C:\Users\XXXX\AppData\Local\Programs\Python\Python37\lib\tkinter_init_.py", line 3501, in init
self.tk.call(('image', 'create', imgtype, name,) + options)
_tkinter.TclError: couldn't recognize data in image file "python.gif"

### 該当のソースコード ```python import tkinter as tk import random response_area = None #グローバル変数 def wakuwaku(): play = ['ちっちゃな映画館を探して映画館を見に行く', 'おしゃれなカフェでまったりする', '絶叫マシンの遊園地ではしゃぐ', 'しっとりと神社・仏閣めぐり', 'シナリオなしの路線バスの旅', 'もやもやする街を散策する', 'ざわめく街の酒場を放浪する'] tomorrow = random.choice(play) response_area.configure(text=tomorrow) #画面を描画する関数 def run(): global response_area root = tk.Tk() root.title('明日のデート : ') font = ('Helevetica',14) canvas =tk.Canvas( #? root, width = 550, height = 200, relief = tk.RIDGE, #? bd = 2) #枠線の幅 canvas.pack() img = tk.PhotoImage(file = 'python.gif') canvas.create_image( 0, 0, image = img, anchor = tk.NW ) response_area = tk.Label( root, width = 50, height = 10, bg = 'orange', #背景の色 font = font, relief = tk.RAISED, #枠線の種類 bd =2) #枠線の幅 response_area.pack() button = tk.Button( root, font = font, text = '明日のデートはどーする?', command = wakuwaku) button.pack() root.mainloop() #プログラムの起点 if (__name__ == '__main__'): run()

>
ちなみに実行するとこんな感じです。

試したこと

個人的に拡張子を変えたりネットを見て試してみたりなどいろいろと模索してみたのですが、どれも解決しませんでした。
ちなみに画像の場所はtest.pyのフォルダと一緒の場所です。(場所はあってると思います)

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

Windows10, Python 3.7.1,
エディタ: IDLE

イメージ説明

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

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

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

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

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

t_obara

2018/12/01 08:48

エラー内容から、拡張子はgifでも内容が異なると想定されます。とりあえず、Pillowを使ってみると良いのではないでしょうか。
can110

2018/12/01 12:03

現象が再現できません(正常に動作します)。差支えなければpython.gifを質問本文に追加アップください。
makaroni

2018/12/02 10:10

皆さん返答ありがとうございます。ご指摘いただいたところ対応させていただきますので、今後ともよろしくお願いいたします
guest

回答1

0

ベストアンサー

アップされている画像形式はJPEGです。
teratailにアップ時に画像形式が変換されていないとすれば、拡張子と実際のデータ形式が異なることがエラーの原因です。
ファイルの拡張子を.gifから.jpgにリネームしimg = tk.PhotoImage(file = 'python.jpg')と修正するか、以下のようにファイルの画像形式自体をJPEGからGIFに変換すれば解消すると思います。
イメージ説明

投稿2018/12/02 10:23

can110

総合スコア38266

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

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

makaroni

2018/12/02 10:42

本当にありがとうございました。 can110さんが添付してくれた画像を使ったら、無事表示できるようになりました。 自分の画像は何度拡張子を変えても成功しなかったのでもしかしたら、画像が壊れていたかもしれません。 ともあれ、これで学習が再開できるのでとても感謝しています。 思っていたより早く解決でき正直驚いています。(笑) ほんと感謝です。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問