Создание настольных Python приложений с графическим интерфейсом пользователя - Тимур Машнин
Шрифт:
Интервал:
Закладка:
Вы можете изменить стиль текста с помощью разметки текста Text Markup.

Упаковка Киви приложения в исполняемый файл для различных платформ достаточно сложная и не всегда обходится без сложностей и ошибок.
Подробные инструкции для упаковки приложения можно найти в документации.

Виджет TextInput предоставляет поле для редактирования простого текста.
Этот виджет поддерживает Unicode, multiline, курсорную навигацию, выделение и буфер обмена.
И TextInput использует две разные системы координат — (x, y) — координаты в пикселях, в основном используются для рендеринга на экране и (col, row) — индекс курсора в символах / строках, используемый для выделения и перемещения курсора.
Чтобы создать однострочный текстовый ввод, можно установить для свойства TextInput.multiline значение False.
Здесь параметр size_hint — это набор значений, используемых макетами для управления размерами своих дочерних элементов. Он указывает размер относительно размера макета, а не абсолютный размер в пикселях.
Если вы не хотите использовать size_hint для ширины или для высоты, установите значение параметра None.
В этом примере Scatter используется для создания интерактивных виджетов, которые можно поворачивать и масштабировать двумя или более пальцами на системе мультитач.
Компоновка BoxLayout размещает виджеты вертикально один над другим или горизонтально один за другим.
И методом bind мы связываем значения двух виджетов — метки и поля ввода.

Виджет CheckBox — это особая кнопка с двумя состояниями, которую можно установить или снять.
Если флажок находится в группе, он становится переключателем, в этом случае одновременно можно выбрать только одну кнопку.
Здесь мы для класса приложения устанавливаем два свойства active, с которыми связываем флажок и метку.
Затем с помощью метода bind мы связываем с флажком функцию, которая обрабатывает выбор флажка.
В результате при выборе флажка изменяется свойство active класса, которое связано с меткой.

Выпадающий список можно использовать с другими виджетами. Потому что можно отображать список виджетов под отображаемым виджетом.
В отличие от других наборов, список виджетов может содержать виджет любого типа: простые кнопки, изображения и т. д.
При добавлении виджетов в список нам нужно указать высоту вручную (отключив size_hint_y), чтобы раскрывающийся список мог вычислить необходимую площадь.
И все кнопки в раскрывающемся списке будут запускать метод DropDown.select().
После его вызова текст основной кнопки будет отображать выбор из раскрывающегося списка.
Здесь в этом примере мы создаем раскрывающийся список DropDown и добавляем в него кнопки методом add_widge.
При этом мы связываем с кнопками метод dropdown.select, передавая в него текст кнопки.
Далее мы создаем виджет — кнопку и связываем с ней метод dropdown.open.
Таким образом, при нажатии кнопки список раскрывается.
И в этом примере мы запускаем приложение с помощью метода runTouchApp.
Это статическая функция, запускающая цикл приложения.
Если вы передадите в runtouchApp виджет, будет создано окно, и виджет будет добавлен в это окно как корневой виджет.

Виджет ScrollView предоставляет прокручиваемое окно просмотра.
И ScrollView принимает только один дочерний элемент и применяет к нему прокрутку в соответствии со свойствами scroll_x и scroll_y.
По умолчанию ScrollView позволяет прокручивать по осям X и Y.
Вы можете явно отключить прокрутку по оси, установив для свойств do_scroll_x или do_scroll_y значение False.
И вы должны тщательно указать размер вашего контента, чтобы получить желаемый эффект прокрутки.
По умолчанию size_hint равен (1, 1), поэтому размер содержимого точно соответствует вашему ScrollView и вам нечего будет прокручивать.
Вы должны деактивировать хотя бы одну из инструкций size_hint (x или y) дочернего элемента, чтобы включить прокрутку.
Здесь, чтобы прокрутить GridLayout по оси Y по вертикали, установим ширину дочернего элемента равной ширине ScrollView (size_hint_x = 1) и установим для свойства size_hint_y значение None.
Здесь мы также используем класс Window — базовый класс для создания окна Kivy по умолчанию.
Мы используем свойство clearcolor, чтобы установить фон окна и свойство size, чтобы установить размер окна.
Для метки мы используем параметр color, чтобы установить цвет текста.

Виджет «Карусель» представляет собой классический удобный для мобильных устройств вид карусели, в котором можно перемещаться между слайдами.
Вы можете добавить любой контент в карусель и заставить его перемещаться по горизонтали или вертикали.
Этот виджет может содержать изображения, видео или любой другой контент.
Здесь мы асинхронно загружаем изображения в карусель и используем класс Clock, чтобы автоматически перемещаться между слайдами.

Компоновка BoxLayout упорядочивает виджеты либо вертикально, либо горизонтально.
Ориентацию компоновки определяет параметр orientation.
И если вы не укажете размер, тогда дочерние виджеты делят размер своего родительского виджета поровну.
Если указать параметр size_hint, он будет использовать доступное пространство после вычитания всех виджетов фиксированного размера.

Виджет Slider используется для увеличения яркости, громкости и т. д.
Этот виджет поддерживает горизонтальную и вертикальную ориентацию, минимальные / максимальные значения и значение по умолчанию.
Здесь параметр value_track определяет, должен ли ползунок рисовать линию между значением min и значением ползунка.
Параметр value_track_color определяет цвет этой линии в формате rgba.
И методом bind мы связываем со значением ползунка функцию on_value, в которой мы изменяем текст метки.

Виджет Popup используется для создания всплывающих окон.
По умолчанию всплывающее окно покрывает все «родительское» окно.
Когда вы создаете всплывающее окно, вы должны как минимум установить Popup.title и Popup.content.
Всплывающие диалоговые окна используются, когда мы должны передать пользователю определенные сообщения.
Всплывающее окно Popup — это особый виджет.
Не пытайтесь добавить его как дочерний элемент к любому другому виджету.
Если вы это сделаете, всплывающее окно будет обрабатываться как обычный виджет и не будет скрыто в фоновом режиме.
Если вы не хотите, чтобы всплывающее окно отображалось в полноэкранном режиме, вы должны либо указать size_hint со значениями меньше 1 (например, size_hint = (. 8, 8)), либо отключить size_hint и использовать атрибуты фиксированного размера.
По умолчанию любой щелчок за пределами всплывающего окна закрывает его.
Если вы этого не хотите, вы можете установить параметр auto_dismiss как False.
Чтобы вручную закрыть всплывающее окно, можно использовать команду dismiss.

Виджет Switch это переключатель, который может быть в одном из состояний — активен или неактивен, как механический выключатель света.
И