from requests import get import tkinter as tk import base64 class Item_image(tk.Canvas): def __init__(self, ID, master=None): self.ID = ID self.master = master s = get('http://ddragon.leagueoflegends.com/cdn/6.24.1/img/item/{}.png'.format(self.ID)) tk.Canvas.__init__(self, master=self.master, width=32, height=32, bd=-1) if self.s.ok: self.data = base64.b64encode(s.content) self.image = tk.PhotoImage(data=self.data).subsample(2, 2) self.create_image(18, 18, image=self.image) list_items = [1055, 2003, 3340, 3145, 3020, 3152, 3157, 3116, 1029, 1001, 3191, 3001, 3135, 3151, 1057, 3089, 3363, 3153, 3006, 3085, 3812, 3036, 3139, 3303, 2049, 3364, 3107, 2301, 3022, 3091, 3026, 3001, 3135, 3151, 1057, 3036, 3020, 3191, 3001, 3135, 1029, 1001, 1055, 2003, 3340, 3026, 3006, 3085, 1001, 3006] root = tk.Tk() tex = tk.Text(root) for item in list_items: tex.insert(tk.END, '{') tex.window_create(END, window=Item_image(item)) tex.insert(tk.END, '}') tex.pack() root.mainloop()
Измененный код выглядит так:
from requests import get import tkinter as tk import re, json, os, base64 class Item_image(tk.Canvas): def __init__(self, ID, master=None): self.ID = ID self.master = master s = get('http://ddragon.leagueoflegends.com/cdn/6.24.1/img/item/{}.png'.format(self.ID)) tk.Canvas.__init__(self, master=self.master, width=32, height=32, bd=-1) if s.ok: self.data = base64.b64encode(s.content) self.image = tk.PhotoImage(data=self.data).subsample(2, 2) self.create_image(18, 18, image=self.image) list_items = [1055, 2003, 3340, 3145, 3020, 3152, 3157, 3116, 1029, 1001, 3191, 3001, 3135, 3151, 1057, 3089, 3363, 3153, 3006, 3085, 3812, 3036, 3139, 3303, 2049, 3364, 3107, 2301, 3022, 3091, 3026, 3001, 3135, 3151, 1057, 3036, 3020, 3191, 3001, 3135, 1029, 1001, 1055, 2003, 3340, 3026, 3006, 3085, 1001, 3006] dict_image = {} #Для сохранения объектов Item_image root = tk.Tk() tex = tk.Text(root) for item in list_items: tex.insert(tk.END, '{') if not item in dict_image: dict_image[item] = Item_image(item) tex.window_create(tk.END, window=dict_image[item]) tex.insert(tk.END, '}') tex.pack() root.mainloop()
Помогите пожалуйста увидеть в чем моя ошибка. Можно конечно это обойти и сделать оптимизацию иначе, но все равно хочется знать в чем тут подвох. Что не так с этим классом?