Kivy — это независимый от платформы инструмент GUI в Python. Так как он может быть запущен на Android, IOS, Linux, Windows и т. Д. Он в основном используется для разработки приложения Android, но это не означает, что его нельзя использовать в приложениях для настольных ПК.
Виджет изображения:
Виджет Изображение используется для отображения изображения. Чтобы использовать виджет изображения, вы должны импортировать:
from kivy.uix.image import Image, AsyncImage (не требуется при работе с файлом .kv )
потому что модуль kivy.uix.image имеет всю функциональность, связанную с изображениями.
Изображения могут быть загружены в приложение двумя типами:
1) Синхронная загрузка: загрузка изображения из системы (должна быть из папки, в которой сохранены файлы .py и .kv)
2) Асинхронная загрузка: для загрузки изображения асинхронно (например, с внешнего веб-сервера)
Примечание. По умолчанию изображение центрируется и помещается в ограничивающий прямоугольник виджета. Если вы не хотите этого, вы можете установить для allow_stretch значение True и keep_ratio в значение False.
Итак, в приведенном ниже коде мы объясним, как загружать синхронные и асинхронные изображения. Также Как изменить размер, Позиционирование, Метка и т. Д. Изображение с некоторыми другими вещами.
Есть сайт wolframalpha.com , там есть API для, я отправляю запрос, получаю решение уравнения в виде картинки, вопрос: как эту картинку взять и поместить в tkinter?
1 ответ 1
Допустим, вам уже известен url изображения.
Ниже два примера (синхронный и асинхронный). В обоих случаях изображение скачивается из интернета в память, потом с помощью библиотеки Pillow (ее нужно установить с помощью pip install pillow ) изображение преобразовывается в формат, который понимает tkinter, потом изображение устанавливается в label.
Первое решение синхронное (графический интерфейс подвисает, пока идет загрузка), загрузка с помощью requests :
Второй вариант с асинхронностью (Python 3.5 и выше), загрузка с помощью библиотеки aiohttp (нужно установить ее с помощью pip install aiohttp ):
Идеи для данной реализации взяты из этих ответов:
177913 просмотра
9 ответа
175 Репутация автора
Как добавить изображение в Tkinter?
Это дало мне синтаксическую ошибку:
Ответы (9)
10 плюса
60734 Репутация автора
В приведенном выше коде нет «синтаксической ошибки» — она либо произошла в какой-то другой строке (выше не весь ваш код, так как нет ни импорта, ни объявления вашей path переменной), либо вы получили какой-то другой тип ошибки.
Приведенный выше пример отлично сработал, тестируя на интерактивном переводчике.
Автор: jsbueno Размещён: 13.04.2012 02:56
6 плюса
881 Репутация автора
Следующий код работает на моей машине
- вам, вероятно, чего-то не хватает в вашем коде.
- также проверьте кодировку файлов кода.
убедитесь, что у вас установлен пакет PIL
22 плюса
221 Репутация автора
Python 3.3.1 [MSC v.1600 32 бит (Intel)] на win32 14.May.2013
Это сработало для меня, следуя приведенному выше коду
Автор: josav09 Размещён: 14.05.2013 06:29
4 плюса
2408 Репутация автора
Это не стандартная библиотека Python 2.7. Поэтому для того, чтобы они работали должным образом, и если вы используете Python 2.7, вы должны сначала загрузить библиотеку PIL: Прямая ссылка для загрузки: http://effbot.org/downloads/PIL-1.1.7.win32-py2.7. exe После установки, выполните следующие действия:
-
Убедитесь , что ваш script.py находится в той же папке , в изображении вы хотите показать.
Отредактируйте свой script.py
Надеюсь, это поможет!
Автор: 喬治扎菲 Размещён: 18.10.2014 02:33
1 плюс
466 Репутация автора
Вот пример для Python 3, который вы можете редактировать для Python 2;)
плюса
1 Репутация автора
Это проблема версии Python. Если вы используете последнюю версию, то ваш старый синтаксис не будет работать и выдает эту ошибку. Пожалуйста, следуйте коду @ Josav09, и все будет в порядке.
3 плюса
6724 Репутация автора
Ваш фактический код может вернуть ошибку в зависимости от формата файла, на который path указывает. При этом некоторые форматы изображений, такие как .gif, .pgm (и .png, если tk.TkVersion> = 8.6), уже поддерживаются PhotoImage классом.
Ниже приведен пример отображения:
или если tk.TkVersion :
Автор: Nae Размещён: 30.01.2018 01:01
плюса
1 Репутация автора
Просто конвертируйте изображение в формате jpg в формат png. Это будет работать на 100%.
Автор: Kazi Размещён: 02.07.2019 03:49
плюса
15 Репутация автора
Этот код работает для меня, также вы должны рассмотреть, если у вас есть какие-либо другие кнопки или метки в этом окне, и вы не используете .place() его, не будет работать должным образом.