Читать книгу Разработка кроссплатформенных мобильных и настольных приложений на Python. Практическое пособие - Анатолий Постолит - Страница 33
Глава 2. Фреймоворк Kivy, язык KV и виджеты, как основа пользовательского интерфейса
2.5.4. Виджет Image – рисунок
ОглавлениеВиджет Image (рисунок) служит для вывода в окно приложения изображения. Покажем на простом примере, как можно использовать виджет Image в приложении. Для этого создадим файл с именем K_Image_1.py и напишем в нем следующий код (листинг 2.25).
Листинг 2.25. Пример использования виджета Image (модуль K_Image_1.py)
# модуль K_ Image _1.py
from kivy. app import App
from kivy.uix.image import Image
class MainApp (App):
…… def build (self):
…… … … img = Image(source="./Images/Fon2.jpg»)
…… … … return img
MainApp().run ()
В этом модуле мы создали объект-изображение img на основе базового класса Image. Для изображения в свойстве source задали путь к файлу с изображением. После запуска данного приложения получим следующий результат (рис.2.20).
Рис. 2.20. Результаты выполнения приложения из модуля K_Image _1.py
В данном примере объект Image был создан в коде на языке Python. А сейчас реализуем тот же пример с использованием языка KV. Для этого создадим файл с именем K_Image_2.py и напишем в нем следующий код (листинг 2.26).
Листинг 2.26. Пример использования виджета Image (модуль K_ mage_2.py)
# модуль K_Image_2.py
from kivy. app import App
from kivy.lang import Builder
KV = «»»
Image:
…… source: "./Images/Fon2.jpg»
«»»
class MainApp (App):
…… def build (self):
…… …… return Builder. load_string (KV)
MainApp().run ()
В данном примере объект Image был создан в коде на языке KV, а результат работы приложения будет таким же, как представлено на предыдущем рисунке.
Виджет Image имеет свойства, которые позволяют загрузить изображение и придать ему оттенок:
– source – источник (путь к файлу для загрузки изображения);
– color – цвет изображения (в формате r, g, b, a), можно использовать для «подкрашивания» изображения.
Этот виджет имеет подкласс AsyncImage, который позволяет загрузить изображение асинхронно (например, из интернета с веб-сайта). Это может быть полезно, поскольку не блокирует приложение в ожидании загрузки изображения (оно загружается в фоновом потоке).