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

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

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

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

Q&A

解決済

2回答

1543閲覧

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

退会済みユーザー

退会済みユーザー

総合スコア0

Python

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

0グッド

1クリップ

投稿2019/09/02 21:40

編集2019/09/02 21:58
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") ^

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

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

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

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

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

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

can110

2019/09/02 21:55

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

回答2

0

ベストアンサー

エラーの原因は

Python

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

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

Python

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

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

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

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

Python

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

の部分を

Python

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

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

Python

1self.cur_img_no = 0

を追加して

Python

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

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

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

Python

1next_img_no = (self.cur_img_no + 1) % len(self.img) 2prev_img_no = (self.cur_img_no - 1) if (self.cur_img_no > 0) else (len(self.img) - 1) 3 4btn1 = tk.Button(self, text=f'{next_img_no}', command=lambda: self.push(self.img[next_img_no])) 5btn1.grid(row=0, column=1) 6btn2 = tk.Button(self, text=f'{prev_img_no}', command=lambda: self.push(self.img[prev_img_no])) 7btn2.grid(row=0, column=2)

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

その他にも

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

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

投稿2019/09/03 00:42

magichan

総合スコア15898

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

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

退会済みユーザー

退会済みユーザー

2019/09/03 08:48

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

0

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

投稿2019/09/02 21:55

can110

総合スコア38252

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問