#python #image #tkinter #png
#python #изображение #tkinter #png
Вопрос:
Я хочу использовать изображения в своем графическом интерфейсе, созданные с помощью tkinter и python. Моя проблема в том, что изображения, которые я загрузил из Google во время выполнения проекта, работают и получают сообщение об ошибке: не удалось распознать данные в файле изображения. Однако старые изображения, сделанные до того, как я запустил проект, работают, и если они того же типа (.png) и в той же папке. Я пробовал с несколькими разными папками, и все они работают со старыми изображениями, но не с новыми. Это метод, который я использую:
import tkinter as tk
from tkinter import *
win = tk.Tk()
photo=PhotoImage(file=r'C:MyFoldermyPicture.png')
photolabel=Label(win, image=photo)
photolabel.pack()
win.mainloop()
Комментарии:
1. Как вы загружаете эти свежие изображения.
2. Я захожу в Google, щелкаю правой кнопкой мыши по изображению, сохраняю как: и помещаю его в свою папку
Ответ №1:
tkinter распознает не все форматы изображений. Самый безопасный формат для tkinter — .gif; вы можете попробовать использовать программу для редактирования изображений, чтобы повторно сохранить ваши файлы в формате .gif. Или вы можете установить модуль pillow и использовать его для загрузки изображений, поскольку он распознает гораздо больше типов изображений.
py -m pip install pillow
И вы бы использовали это так:
import tkinter as tk
from PIL import Image, ImageTk
win = tk.Tk()
photo=ImageTk.PhotoImage(Image.open(r'C:MyFoldermyPicture.png'))
photolabel=tk.Label(win, image=photo)
photolabel.pack()
win.mainloop()
Комментарии:
1. AFAIK, более новые версии
tkinter
также поддерживают png.2. @CoolCloud .png имеет несколько форм, и я не думаю, что поддерживаются все типы сжатия. Кроме того, имя .png не означает, что на самом деле это формат png, нередко люди случайно называют изображения с неправильным расширением. Большинство программ все равно игнорируют расширение, поэтому оно остается незамеченным.
3. Правда о переименовании файла png, это тоже может быть причиной.
4. Это работает! Я также пробовал этот метод с помощью PIL, но я думаю, что PIL был загружен не в ту папку, я переместил его в нужную папку и заставил его работать. Спасибо за помощь!