Найти в Дзене
Katsysiro

Создание мобильного приложения с Kivy Python Framework. Часть 2

Оглавление

Это продолжение, остальные статьи:

Работа с Kivy Widgets

Виджет является элементом управления, с которым пользователь будет взаимодействовать. Все наборы графического интерфейса пользователя поставляются с набором виджетов. Некоторые распространенные виджеты, которые вы могли использовать, включают кнопки, поля со списками и вкладки. Kivy имеет много виджетов, встроенных в его структуру.

Запуск «Привет, Киви!» программа

Чтобы увидеть, как работает Kivy, взгляните на следующее «Hello, World!» заявление:

from kivy.app import App
from kivy.uix.label import Label
class MainApp(App):
def build(self):
label = Label(text=' Привет Дзен',
size_hint=(.5, .5),
pos_hint={'center_x': .5, 'center_y': .5})
return label
if __name__ == '__main__':
app = MainApp()
app.run()

Каждое приложение Kivy должно иметь подкласс App и переопределение build(). Здесь вы можете поместить свой код пользовательского интерфейса или вызвать другие функции, которые определяют ваш код пользовательского интерфейса. В этом случае необходимо создать Label виджет и передать text, size_hint и pos_hint. Эти последние два аргумента не обязательны.

size_hint - сообщает Kivy пропорции, которые следует использовать при создании виджета. Требуется два числа:

  • Первое число является x - подсказкой размера и относится к ширине элемента управления.
  • Второе число является y - подсказкой размера и относится к высоте элемента управления.

Оба эти числа могут быть в диапазоне между 0 и 1. Значением по умолчанию для обоих подсказок является 1. Вы также можете использовать pos_hint для позиционирования виджета. В приведенном выше блоке кода вы указываете Kivy центрировать виджет по осям x и y.

Чтобы заставить приложение работать, вы создаете экземпляр своего MainApp класса и затем вызываете run(). Когда вы сделаете это, вы должны увидеть на экране следующее:

-2

Киви также выводит много текста stdout:

[INFO ] [Logger ] Record log in C:\Users\Romashka\.kivy\logs\kivy_20-03-26_5.txt
[INFO ] [deps ] Successfully imported "kivy_deps.glew" 0.1.12
[INFO ] [deps ] Successfully imported "kivy_deps.sdl2" 0.1.23
[INFO ] [Kivy ] v1.11.1
[INFO ] [Kivy ] Installed at "C:\Users\Romashka\AppData\Local\Programs\Python\Python37\lib\site-packages\kivy\__init__.py"
[INFO ] [Python ] v3.7.7 (tags/v3.7.7:d7c567b08f, Mar 10 2020, 10:41:24) [MSC v.1900 64 bit (AMD64)]
[INFO ] [Python ] Interpreter at "C:\Users\Romashka\AppData\Local\Programs\Python\Python37\python.exe"
[INFO ] [Factory ] 184 symbols loaded
[INFO ] [Image ] Providers: img_tex, img_dds, img_sdl2, img_pil, img_gif (img_ffpyplayer ignored)
[INFO ] [Text ] Provider: sdl2
[INFO ] [Window ] Provider: sdl2
[INFO ] [GL ] Using the "OpenGL" graphics system
[INFO ] [GL ] GLEW initialization succeeded
[INFO ] [GL ] Backend used <glew>
[INFO ] [GL ] OpenGL version <b'4.6.13586 Compatibility Profile Context 19.12.2 26.20.15002.61'>
[INFO ] [GL ] OpenGL vendor <b'ATI Technologies Inc.'>
[INFO ] [GL ] OpenGL renderer <b'AMD Radeon R7 200 Series'>
[INFO ] [GL ] OpenGL parsed version: 4, 6
[INFO ] [GL ] Shading version <b'4.60'>
[INFO ] [GL ] Texture max size <16384>
[INFO ] [GL ] Texture max units <32>
[INFO ] [Window ] auto add sdl2 input provider
[INFO ] [Window ] virtual keyboard not allowed, single mode, not docked
[INFO ] [Base ] Start application main loop
[INFO ] [GL ] NPOT texture support is available
[INFO ] [WindowSDL ] exiting mainloop and closing.
[INFO ] [Base ] Leaving application in progress...

Это полезно для отладки вашего приложения.

Далее попробуем добавить Image виджет и посмотрим, чем он отличается от Label.

Отображение изображения

В Kivy есть несколько различных виджетов, связанных с изображениями. Вы можете использовать Image для загрузки локальных изображений с жесткого диска или AsyncImage для загрузки изображения с URL-адреса. В этом примере вы будете придерживаться стандартного Image класса:

from kivy.app import App
from kivy.uix.image import Image
class MainApp(App):
def build(self):
img = Image(source='./kivy-logo-black-512.png',
size_hint=(1, .5),
pos_hint={'center_x':.5, 'center_y':.5})
return img
if __name__ == '__main__':
app = MainApp()
app.run()

В этом коде вы импортируете Image из kivy.uix.image пакета. Image класс содержит много различных параметров, но тот, который мы используем - source. Это говорит Kivy, какое изображение загрузить. Здесь вы передаете полный путь к изображению. Остальная часть кода такая же, как вы видели в предыдущем примере.

Когда вы запустите этот код, вы увидите что-то вроде следующего:

-3

Текст из предыдущего примера был заменен изображением.

Далее вы узнаете, как добавить и упорядочить несколько виджетов в вашем приложении.

Продолжение следует.

Если вам понравилось подписывайтесь на канал, ставьте лайки, комментируйте!

Наука
7 млн интересуются