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

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

ただいまの
回答率

88.63%

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

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 4,655

makaroni

score 24

 前提・実現したいこと

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

img = tk.PhotoImage(file = 'python.gif')

私はこの部分に原因があると思っていますが...(間違っていたらすいません)

最近はずっとこのエラーで停滞モードなので
何卒ご教授よろしくお願いします。

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

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"

 該当のソースコード

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

イメージ説明

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • t_obara

    2018/12/01 17:48

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

    キャンセル

  • can110

    2018/12/01 21:03

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

    キャンセル

  • makaroni

    2018/12/02 19:10

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

    キャンセル

回答 1

checkベストアンサー

+1

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/12/02 19:42

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

    キャンセル

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

  • ただいまの回答率 88.63%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る