Уведомления

Группа в Telegram: @pythonsu

#1 Май 7, 2016 22:14:26

junga_py
Зарегистрирован: 2016-03-08
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Вывод картинки в окно(tkinter) через диалог открытия файла

Здравствуйте. Написал программу, которая должна выводить картинку из файла в главное окно. Выбор файла происходит в диалоговом окне. Но когда запускаю программу и выбираю файл, картинка не выводится, хотя границы главного окна раздвигаются в соответствии с размерами картинки. Как все-таки вывести изображение, сохраненное в файле?

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() # цикл обработки сообщений

Офлайн

#2 Май 8, 2016 03:03:02

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Вывод картинки в окно(tkinter) через диалог открытия файла

Попробуй вывести картинку, передав путь напрямую, без диалога. Если выведется, то смотри, что возвращает диалог (через print() ).



Офлайн

#3 Май 8, 2016 08:45:16

4kpt_IV
Зарегистрирован: 2016-01-08
Сообщения: 999
Репутация: +  49  -
Профиль   Отправить e-mail  

Вывод картинки в окно(tkinter) через диалог открытия файла

Image должен быть или глобальным или явно передаваться.

Офлайн

#4 Май 10, 2016 12:30:46

junga_py
Зарегистрирован: 2016-03-08
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Вывод картинки в окно(tkinter) через диалог открытия файла

Спасибо! Получилось . Потом уже в руководстве к классу 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.

Офлайн

#5 Май 10, 2016 13:08:41

4kpt_IV
Зарегистрирован: 2016-01-08
Сообщения: 999
Репутация: +  49  -
Профиль   Отправить e-mail  

Вывод картинки в окно(tkinter) через диалог открытия файла

junga_py
или явно передаваться

junga_py
но там еще как вариант предлагают передавать объект Image, как атрибут другого объекта

Не понял шутки…

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version