Python открывает изображения без cmd

#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 в качестве программы по умолчанию, но это бесполезно.