nick789
imgToolBarOpen = ImageTk.PhotoImage(data=str)
ну нельзя же так буквально ему строку скармливать,
from tkinter import *
from PIL import ImageTk, Image
from io import BytesIO
import base64
pic = b'iVBOR......'
root = Tk()
img_tk = ImageTk.PhotoImage(Image.open(BytesIO(base64.b64decode(pic))))
butToolBarOpen = Button(root, image=img_tk)
butToolBarOpen.pack()
root.mainloop()
Rafik
Для хранения в одном файле множества картинок необходимо предусмотреть какой-либо разделитель типа осмысленного слова “моякартинка” или чего-либо другого. После прочтения всего содержимого из файла: поделить строку по этому разделителю через split и конвертировать требуемый элемент списка в нужном месте кода.
Я бы вообще делал проще, создаем файл например icons.py в нем переменные типа
main_icon = b'iVBOR......'
open_icon = b'iVBOR......'
...
и т.д.
и потом уже в основном коде както так:
import icons
...
open_icon = ImageTk.PhotoImage(Image.open(BytesIO(base64.b64decode(icons.open_icon))))
butToolBarOpen = Button(root, image=open_icon,.....)
нет конечно можно хранить и просто в файле через разделитель, но что тогда мешает сразу записать в один файл в бинарном виде все картинки, через тот же разделитель?