Я пишу программу tkinter, которая использует некоторые файлы JPG для своего фона. Тем не менее, я обнаружил, что, когда сценарий преобразуется в файл .exe с помощью «pyinstaller», изображения, используемые для окон tkinter, не компилируются/не добавляются в файл .exe.Как использовать строку изображения с кодировкой base64 в ярлыке Tkinter?
Поэтому я решил записать жесткий диск в сценарии Python, чтобы не было внешней зависимости. Для этого я сделал следующие вещи:
import base64
base64_encodedString= ''' b'hAnNH65gHSJ ......(continues...) '''
datas= base64.b64decode(base64_encodedString)
Приведенный выше код используется для декодирования базового 64 кодированных данных изображения. Я хочу использовать данные декодированного изображения для использования в качестве изображения и отображения в качестве метки/кнопки в tkinter.
Например:
from tkinter import *
root=Tk()
l=Label(root,image=image=PhotoImage(data=datas)).pack()
root.mainloop()
Однако Tkinter не принимает значение, хранящееся в data
для использования в качестве изображения. Он отображает следующую ошибку -
Traceback (most recent call last):
File "test.py", line 23, in <module>
l=Label(root,image=PhotoImage(data=datas))
File "C:\Users\Admin\AppData\Local\Programs\Python\Python35-32\lib\tkinter\__init__.py", line 3394, in __init__
Image.__init__(self, 'photo', name, cnf, master, **kw)
File "C:\Users\Admin\AppData\Local\Programs\Python\Python35-32\lib\tkinter\__init__.py", line 3350, in __init__
self.tk.call(('image', 'create', imgtype, name,) + options)
_tkinter.TclError: couldn't recognize image data
Вы используете python2 или python3? В соответствии с этим [вопросом] (http://stackoverflow.com/questions/27175029/tkinter-will-not-recognize-image-data-in-base64-encoded-string) это похоже на python3. –
@ j_4321 Я использую Python 3. Я проверил этот вопрос, и он, похоже, не решает мою проблему. –
Итак, вы пробовали код, указанный в [вопросе] (http://stackoverflow.com/questions/27175029/tkinter-will-not-recognize-image-data-in-base64-encoded-string)? –