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

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

ただいまの
回答率

87.58%

tkinterの作成ファイルの実行を行いたい

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 555
退会済みユーザー

退会済みユーザー

import tkinter as tk
from PIL import Image, ImageTk


class Frame(tk.Frame):
    img1=None
    img2=None
    def __init__(self, master=None, title=None, width=100, height=100):
        tk.Frame.__init__(self, master, height=height, width=width)
        if title is not None:
            self.master.title(title)
        def photoImage(f):
            img = Image.open(f)
            if img.mode == 'P':
                img = img.convert('RGB')
            img = img.resize((80,80))
            photo = ImageTk.PhotoImage(img)
            return photo

        # 画像の取得
        self.img1 = photoImage(r'C:\Users\yusmi\Downloads\down\d 01.jpg')
        self.img2 = photoImage(r'C:\Users\yusmi\Downloads\down\d 02.jpg')
        self.img3 = photoImage(r'C:\Users\yusmi\Downloads\down\d 03.jpg')
        self.img4 = photoImage(r'C:\Users\yusmi\Downloads\down\d 04.jpg')
        self.img5 = photoImage(r'C:\Users\yusmi\Downloads\down\d 05.jpg')
        self.img6 = photoImage(r'C:\Users\yusmi\Downloads\down\d 06.jpg')
        self.img7 = photoImage(r'C:\Users\yusmi\Downloads\down\d 07.jpg')
        self.img8 = photoImage(r'C:\Users\yusmi\Downloads\down\d 08.jpg')
        self.img9 = photoImage(r'C:\Users\yusmi\Downloads\down\d 09.jpg')
        self.img10 = photoImage(r'C:\Users\yusmi\Downloads\down\d 10.jpg')
        self.img11 = photoImage(r'C:\Users\yusmi\Downloads\down\d 11.jpg')
        self.img12 = photoImage(r'C:\Users\yusmi\Downloads\down\d 12.jpg')
        self.img13 = photoImage(r'C:\Users\yusmi\Downloads\down\d 13.jpg')
        self.img14 = photoImage(r'C:\Users\yusmi\Downloads\down\d 14.jpg')
        self.img15 = photoImage(r'C:\Users\yusmi\Downloads\down\d 15.jpg')
        self.img16 = photoImage(r'C:\Users\yusmi\Downloads\down\d 16.jpg')
        self.img17 = photoImage(r'C:\Users\yusmi\Downloads\down\d 17.jpg')
        self.img18 = photoImage(r'C:\Users\yusmi\Downloads\down\d 18.jpg')
        self.img19 = photoImage(r'C:\Users\yusmi\Downloads\down\d 19.jpg')
        self.img20 = photoImage(r'C:\Users\yusmi\Downloads\down\d 20.jpg')
        self.img21 = photoImage(r'C:\Users\yusmi\Downloads\down\d 21.jpg')
        self.img22 = photoImage(r'C:\Users\yusmi\Downloads\down\d 22.jpg')
        self.img23 = photoImage(r'C:\Users\yusmi\Downloads\down\d 23.jpg')
        self.img24 = photoImage(r'C:\Users\yusmi\Downloads\down\d 24.jpg')
        self.img25 = photoImage(r'C:\Users\yusmi\Downloads\down\d 25.jpg')
        self.img26 = photoImage(r'C:\Users\yusmi\Downloads\down\d 26.jpg')
        self.img27 = photoImage(r'C:\Users\yusmi\Downloads\down\d 27.jpg')
        self.img28 = photoImage(r'C:\Users\yusmi\Downloads\down\d 28.jpg')
        self.img29 = photoImage(r'C:\Users\yusmi\Downloads\down\d 29.jpg')
        self.img30 = photoImage(r'C:\Users\yusmi\Downloads\down\d 30.jpg')


        self.set_button()
        self.set_label()

    def set_button(self):
        # ボタン
        quit=tk.Button(self, text='quit', bg='gray', command=self.master.destroy)
        quit.grid(row=0, column=0)

        btn1 = tk.Button(self, text='1', command=lambda: self.push(self.img1))
        btn1.grid(row=0, column=1)
        btn2 = tk.Button(self, text='2', command=lambda: self.push(self.img2))
        btn2.grid(row=0, column=2)
        btn1 = tk.Button(self, text='1', command=lambda: self.push(self.img3))
        btn1.grid(row=0, column=1)
        btn2 = tk.Button(self, text='2', command=lambda: self.push(self.img4))
        btn2.grid(row=0, column=2)
        btn1 = tk.Button(self, text='1', command=lambda: self.push(self.img5))
        btn1.grid(row=0, column=1)
        btn2 = tk.Button(self, text='2', command=lambda: self.push(self.img6))
        btn2.grid(row=0, column=2)
        btn1 = tk.Button(self, text='1', command=lambda: self.push(self.img7))
        btn1.grid(row=0, column=1)
        btn2 = tk.Button(self, text='2', command=lambda: self.push(self.img8))
        btn2.grid(row=0, column=2)
        btn1 = tk.Button(self, text='1', command=lambda: self.push(self.img9))
        btn1.grid(row=0, column=1)
        btn2 = tk.Button(self, text='2', command=lambda: self.push(self.img10))
        btn2.grid(row=0, column=2)
        btn1 = tk.Button(self, text='1', command=lambda: self.push(self.img11))
        btn1.grid(row=0, column=1)
        btn2 = tk.Button(self, text='2', command=lambda: self.push(self.img12))
        btn2.grid(row=0, column=2)
        btn1 = tk.Button(self, text='1', command=lambda: self.push(self.img13))
        btn1.grid(row=0, column=1)
        btn2 = tk.Button(self, text='2', command=lambda: self.push(self.img14))
        btn2.grid(row=0, column=2)
        btn2 = tk.Button(self, text='1', command=lambda: self.push(self.img15))
        btn1.grid(row=0, column=1)
        btn1 = tk.Button(self, text='2', command=lambda: self.push(self.img16))
        btn2.grid(row=0, column=2)
        btn2 = tk.Button(self, text='1', command=lambda: self.push(self.img17))
        btn1.grid(row=0, column=1)
        btn1 = tk.Button(self, text='2', command=lambda: self.push(self.img18))
        btn2.grid(row=0, column=2)
        btn2 = tk.Button(self, text='1', command=lambda: self.push(self.img19))
        btn1.grid(row=0, column=1)
        btn1 = tk.Button(self, text='2', command=lambda: self.push(self.img20))
        btn2.grid(row=0, column=2)
        btn2 = tk.Button(self, text='1', command=lambda: self.push(self.img21))
        btn1.grid(row=0, column=1)
        btn1 = tk.Button(self, text='2', command=lambda: self.push(self.img22))
        btn2.grid(row=0, column=2)
        btn2 = tk.Button(self, text='1', command=lambda: self.push(self.img23))
        btn1.grid(row=0, column=1)
        btn1 = tk.Button(self, text='2', command=lambda: self.push(self.img24))
        btn2.grid(row=0, column=2)
        btn2 = tk.Button(self, text='1', command=lambda: self.push(self.img25))
        btn1.grid(row=0, column=1)
        btn1 = tk.Button(self, text='2', command=lambda: self.push(self.img26))
        btn2.grid(row=0, column=2)
        btn2 = tk.Button(self, text='1', command=lambda: self.push(self.img27))
        btn1.grid(row=0, column=1)
        btn1 = tk.Button(self, text='2', command=lambda: self.push(self.img28))
        btn2.grid(row=0, column=2)
        btn2 = tk.Button(self, text='1', command=lambda: self.push(self.img29))
        btn1.grid(row=0, column=1)
        btn1 = tk.Button(self, text='2', command=lambda: self.push(self.img30))
        btn2.grid(row=0, column=2)




        def set_label(self):
        # ラベル
        l1 = tk.Label(self, image=self.img1,img3,img5,img7,img9,img,11,img13,img15,img17,img19,img21,img23,img25,img27,img29, bg="linen")
        l1.image = self.img1
        l1.grid(row=1, column=1)
        self.label1 = l1

    # 画像切替
    def push(self, img):
        self.label1.configure(image=img)

if __name__ == "__main__":

    frm = Frame(title='test', width=200, height=200)
    frm.pack()

    # ループ
    frm.mainloop()


上記を実行したのですが、下記のエラーとなりました。

エラー
 File "yuja.py", line 127
    lb1 = tk.Label(self, image=self.img1,img3,img5,img7,img9,img,11,img13,img15,img17,img19,img21,img23,img25,img27,img29, bg="linen")
      ^


戻ったり進んだりできるものを作成したいです。
どなたかアドバイスを頂ける方よろしくお願いいたします。

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

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

  • can110

    2019/09/03 06:55

    エラー内容を記載ください。

    キャンセル

回答 2

checkベストアンサー

0

エラーの原因は

# ラベル
tk.Label(self, image=self.img1,img3,img5,img7,img9,img,11,img13,img15,img17,img19,img21,img23,img25,img27,img29, bg="linen")

の部分にてimageパラメータの値が

image=self.img1,img3,img5・・・`` 

と記述にて文法的にエラーとなっております。(このような記述方法はありません)

戻ったり進んだりできるものを作成したいです。

なのであれば、 各Image の定義

       # 画像の取得
        self.img1 = photoImage(r'C:\Users\yusmi\Downloads\down\d 01.jpg')
        self.img2 = photoImage(r'C:\Users\yusmi\Downloads\down\d 02.jpg')
        self.img3 = photoImage(r'C:\Users\yusmi\Downloads\down\d 03.jpg')
        self.img4 = photoImage(r'C:\Users\yusmi\Downloads\down\d 04.jpg')
        self.img5 = photoImage(r'C:\Users\yusmi\Downloads\down\d 05.jpg')
        self.img6 = photoImage(r'C:\Users\yusmi\Downloads\down\d 06.jpg')
        self.img7 = photoImage(r'C:\Users\yusmi\Downloads\down\d 07.jpg')
        self.img8 = photoImage(r'C:\Users\yusmi\Downloads\down\d 08.jpg')
        self.img9 = photoImage(r'C:\Users\yusmi\Downloads\down\d 09.jpg')
        self.img10 = photoImage(r'C:\Users\yusmi\Downloads\down\d 10.jpg')
        self.img11 = photoImage(r'C:\Users\yusmi\Downloads\down\d 11.jpg')
        self.img12 = photoImage(r'C:\Users\yusmi\Downloads\down\d 12.jpg')
        self.img13 = photoImage(r'C:\Users\yusmi\Downloads\down\d 13.jpg')
        self.img14 = photoImage(r'C:\Users\yusmi\Downloads\down\d 14.jpg')
        self.img15 = photoImage(r'C:\Users\yusmi\Downloads\down\d 15.jpg')
        self.img16 = photoImage(r'C:\Users\yusmi\Downloads\down\d 16.jpg')
        self.img17 = photoImage(r'C:\Users\yusmi\Downloads\down\d 17.jpg')
        self.img18 = photoImage(r'C:\Users\yusmi\Downloads\down\d 18.jpg')
        self.img19 = photoImage(r'C:\Users\yusmi\Downloads\down\d 19.jpg')
        self.img20 = photoImage(r'C:\Users\yusmi\Downloads\down\d 20.jpg')
        self.img21 = photoImage(r'C:\Users\yusmi\Downloads\down\d 21.jpg')
        self.img22 = photoImage(r'C:\Users\yusmi\Downloads\down\d 22.jpg')
        self.img23 = photoImage(r'C:\Users\yusmi\Downloads\down\d 23.jpg')
        self.img24 = photoImage(r'C:\Users\yusmi\Downloads\down\d 24.jpg')
        self.img25 = photoImage(r'C:\Users\yusmi\Downloads\down\d 25.jpg')
        self.img26 = photoImage(r'C:\Users\yusmi\Downloads\down\d 26.jpg')
        self.img27 = photoImage(r'C:\Users\yusmi\Downloads\down\d 27.jpg')
        self.img28 = photoImage(r'C:\Users\yusmi\Downloads\down\d 28.jpg')
        self.img29 = photoImage(r'C:\Users\yusmi\Downloads\down\d 29.jpg')
        self.img30 = photoImage(r'C:\Users\yusmi\Downloads\down\d 30.jpg')

の部分を

       # 画像の取得
        self.img = [photoImage(r'C:\Users\yusmi\Downloads\down\d 01.jpg'),
                    photoImage(r'C:\Users\yusmi\Downloads\down\d 02.jpg'),
                    photoImage(r'C:\Users\yusmi\Downloads\down\d 03.jpg'),
                    photoImage(r'C:\Users\yusmi\Downloads\down\d 04.jpg'),
                    photoImage(r'C:\Users\yusmi\Downloads\down\d 05.jpg'),
                    photoImage(r'C:\Users\yusmi\Downloads\down\d 06.jpg'),
                    photoImage(r'C:\Users\yusmi\Downloads\down\d 07.jpg'),
                    photoImage(r'C:\Users\yusmi\Downloads\down\d 08.jpg'),
                    photoImage(r'C:\Users\yusmi\Downloads\down\d 09.jpg'),
                    photoImage(r'C:\Users\yusmi\Downloads\down\d 10.jpg'),
                    photoImage(r'C:\Users\yusmi\Downloads\down\d 11.jpg'),
                    photoImage(r'C:\Users\yusmi\Downloads\down\d 12.jpg'),
                    photoImage(r'C:\Users\yusmi\Downloads\down\d 13.jpg'),
                    photoImage(r'C:\Users\yusmi\Downloads\down\d 14.jpg'),
                    photoImage(r'C:\Users\yusmi\Downloads\down\d 15.jpg'),
                    photoImage(r'C:\Users\yusmi\Downloads\down\d 16.jpg'),
                    photoImage(r'C:\Users\yusmi\Downloads\down\d 17.jpg'),
                    photoImage(r'C:\Users\yusmi\Downloads\down\d 18.jpg'),
                    photoImage(r'C:\Users\yusmi\Downloads\down\d 19.jpg'),
                    photoImage(r'C:\Users\yusmi\Downloads\down\d 20.jpg'),
                    photoImage(r'C:\Users\yusmi\Downloads\down\d 21.jpg'),
                    photoImage(r'C:\Users\yusmi\Downloads\down\d 22.jpg'),
                    photoImage(r'C:\Users\yusmi\Downloads\down\d 23.jpg'),
                    photoImage(r'C:\Users\yusmi\Downloads\down\d 24.jpg'),
                    photoImage(r'C:\Users\yusmi\Downloads\down\d 25.jpg'),
                    photoImage(r'C:\Users\yusmi\Downloads\down\d 26.jpg'),
                    photoImage(r'C:\Users\yusmi\Downloads\down\d 27.jpg'),
                    photoImage(r'C:\Users\yusmi\Downloads\down\d 28.jpg'),
                    photoImage(r'C:\Users\yusmi\Downloads\down\d 29.jpg'),
                    photoImage(r'C:\Users\yusmi\Downloads\down\d 10.jpg')]


のようにリストで管理し、
更に、メンバ変数に現在表示している画像の番号

self.cur_img_no = 0


を追加して

l1 = tk.Label(self, image=self.img[self.cur_img_no], bg="linen")


のように記述すると良いかと思います。

更には Button の部分も現在表示されない無駄なbuttonの記述がたくさんありますので、上記の''cur_img_no`` の定義をつかって

next_img_no = (self.cur_img_no + 1) % len(self.img)
prev_img_no = (self.cur_img_no - 1) if (self.cur_img_no > 0) else (len(self.img) - 1)

btn1 = tk.Button(self, text=f'{next_img_no}', command=lambda: self.push(self.img[next_img_no]))
btn1.grid(row=0, column=1)
btn2 = tk.Button(self, text=f'{prev_img_no}', command=lambda: self.push(self.img[prev_img_no]))
btn2.grid(row=0, column=2)

のように、現在表示している写真番号(self.cur_img_no)に応じて変更するようにすると良いかと思います。

その他にも

  • cur_img_no の更新部
  • Labelの更新部
  • Buttonの更新部

などなどと修正しなければならない点は多々ありそうですが、とりあえず。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2019/09/03 17:48

    わかりやすくて,丁寧な解説をありがとうございます.

    キャンセル

0

当方環境で実行してみたところIndentationError: expected an indented blockが発生しました。
インデントを直してください。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

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

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

関連した質問

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