試してみた。なかなか面白いですね。
python
1import tkinter as tk
2from PIL import Image, ImageTk
3
4
5class Frame(tk.Frame):
6 img1=None
7 img2=None
8 def __init__(self, master=None, title=None, width=100, height=100):
9 tk.Frame.__init__(self, master, height=height, width=width)
10 if title is not None:
11 self.master.title(title)
12 def photoImage(f):
13 img = Image.open(f)
14 if img.mode == 'P':
15 img = img.convert('RGB')
16 img = img.resize((80,80))
17 photo = ImageTk.PhotoImage(img)
18 return photo
19
20 # 画像の取得
21 self.img1 = photoImage(r'../resource/heart_16.png')
22 self.img2 = photoImage(r'../resource/map-marker_16.png')
23
24 self.set_button()
25 self.set_label()
26
27 def set_button(self):
28 # ボタン
29 quit=tk.Button(self, text='quit', bg='gray', command=self.master.destroy)
30 quit.grid(row=0, column=0)
31
32 btn1 = tk.Button(self, text='画像1', command=lambda: self.push(self.img1))
33 btn1.grid(row=0, column=1)
34 btn2 = tk.Button(self, text='画像2', command=lambda: self.push(self.img2))
35 btn2.grid(row=0, column=2)
36
37 def set_label(self):
38 # ラベル
39 l1 = tk.Label(self, image=self.img1, bg="linen")
40 l1.image = self.img1
41 l1.grid(row=1, column=1)
42 self.label1 = l1
43
44 # 画像切替
45 def push(self, img):
46 self.label1.configure(image=img)
47
48if __name__ == "__main__":
49
50 frm = Frame(title='test', width=200, height=200)
51 frm.pack()
52
53 # ループ
54 frm.mainloop()
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/09 16:34