Форум сайта python.su
0
Здравствуйте. Написал программу, которая должна выводить картинку из файла в главное окно. Выбор файла происходит в диалоговом окне. Но когда запускаю программу и выбираю файл, картинка не выводится, хотя границы главного окна раздвигаются в соответствии с размерами картинки. Как все-таки вывести изображение, сохраненное в файле?
from tkinter import * from tkinter.filedialog import * from PIL import Image, ImageTk import fileinput # обработчик события выбора пункта меню "Открыть файл" def openfile(): op = askopenfilename(initialdir = "D:\\Фонетика") # окно выбора файла image = Image.open(op) # создать объект для работы с изображением print(image.size) label = Label(root, image = ImageTk.PhotoImage(image)) # создать объект для вывода картинки label.pack(expand = "yes", fill = "both", side = "left") # нарисовать надпись с картинкой root = Tk() # создать окно верхнего уровня приложения m = Menu(root) # создать объект Меню в главном окне root.config(menu=m) #сконфигурировать окно с указанием меню fm = Menu(m) #создать пункт Меню с размещением в основном Меню (m) m.add_cascade(label="Файл", menu=fm) # пункт располагается в основном меню (m) fm.add_command(label="Открыть", command=openfile) # формируется команда открытия файла fm.add_command(label="Закрыть", command=root.destroy) # формируется команда выхода root.mainloop() # цикл обработки сообщений
Офлайн
857
Попробуй вывести картинку, передав путь напрямую, без диалога. Если выведется, то смотри, что возвращает диалог (через print() ).
Офлайн
49
Image должен быть или глобальным или явно передаваться.
Офлайн
0
Спасибо! Получилось
. Потом уже в руководстве к классу PhotoImage нашел похожие указания, но там еще как вариант предлагают передавать объект Image, как атрибут другого объекта:
You must keep a reference to the image object in your Python program, either by storing it in a global variable, or by attaching it to another object.
Офлайн
49
junga_py
или явно передаваться
junga_py
но там еще как вариант предлагают передавать объект Image, как атрибут другого объекта
Офлайн