#python #image #tkinter #pillow
#python #изображение #tkinter #python-imaging-library
Вопрос:
Я работаю над проектом, который включает в себя открытие изображений через tkinter
окно с помощью Pillow
модуля.
Всякий раз, когда я пытаюсь открыть изображения, они открываются с черным экраном на обратной стороне.
Как я могу открыть их самостоятельно?
Я нажимаю на фотографию здесь:
и он открывается с черным экраном позади:
Это моя функция go_to_function:
from PIL import Image
def go_to_photo():
try:
img = Image.open(source_file_org_images_path "/" photo_name_name '.png')
img.show()
img.close()
except:
try:
img = Image.open(source_file_org_images_path "/" photo_name_name '.jpg')
img.show()
img.close()
except:
try:
img = Image.open(source_file_org_images_path "/" photo_name_name '.jpeg')
img.show()
img.close()
except:
print('without a photo')
Комментарии:
1. как вы запускаете эту функцию? Непосредственно в коде или с помощью
subprocess()
? Вероятно,img.show()
запускается окно созданияcmd.exe
(этот черный экран скрыт). Возможно, используйтеtk.TopLevel()
для создания собственного окна и отображения изображения вtk.Label
.2. Я использую его непосредственно в коде. Да, img.show() создает окна, и я не знаю, как его закрыть. Спасибо за идею, но нет ли встроенных аргументов Image, которые блокируют черный экран.
3. Я не думаю, что есть какие-либо аргументы. Как я знаю
show()
, был создан для отображения изображения в коротком сценарии — в основном для отладки кода.
Ответ №1:
Из документов:
В Windows изображение сохраняется во временный BMP-файл и для его отображения используется стандартная утилита отображения BMP.
Это означает, что вы можете просто изменить свою программу по умолчанию, чтобы открывать файлы bmp с помощью, например, Paint, и она будет использовать эту программу для отображения ваших изображений.
Кстати: вы можете переместить img.show()
и img.close()
в после ваших блоков, за исключением попыток, так что вам не придется повторяться так часто.
Комментарии:
1. Это не сработало. Я использую Picasa в качестве программы по умолчанию, но это бесполезно.