Рубрики
Без рубрики

KIVY 101: как использовать BoxLayouts

Получите практические, реальные навыки Python на наших ресурсах и пути

Автор оригинала: Mike Driscoll.

Недавно я начал изучать kivy, натуральный пользовательский интерфейс Python Natural User (Nui). Как я понимаю, Кивы своего рода духовного преемника пимт , который вы можете прочитать больше о здесь Отказ В этой статье мы будем изучать, как Kivy обрабатывает управление макетом. Хотя вы можете разместить виджеты с помощью координат X/Y, в каждом инструменте GUI я использовал, почти всегда лучше использовать какой-то управление макетом, который обеспечивает Toolkit. Это позволяет виджеты разместить и перемещаться надлежащим образом, так как пользователь меняет размер окна. В Киве, эти вещи Макеты Отказ Если вы использовали WXPYPHON, они аналогичны суставам Wxpython.

Я также должен отметить, что KIVY может делать макеты двумя разными способами. Первый способ – делать макеты только с кодом Python. Второй способ состоит в том, чтобы использовать смесь языка Python и Kv. Это содействие способом просмотра моделей-контроллеров. Это выглядит как CSS и напоминает мне немного WXPYPHON и XRC. Мы посмотрим, как использовать оба метода в этой статье. В то время как KIVY поддерживает несколько типов макетов, эта статья будет сосредоточиться только на Boxlayout Отказ Мы покажем, как гнездить Boxlayouts.

Кивы, Python и Boxlayout

Создание BoxLayout в Kivy с помощью Python на самом деле довольно легко и довольно интуитивно. Мы начнем с примера кода, а затем следуйте коду с объяснением. Давайте начнем!

Здесь мы создали вертикально ориентированный класс BoxLayout и горизонтально ориентированный класс Boxlayout. Каждый класс содержит 5 кнопок со случайными цветами фона. Цвета следуют RGBA, но могут иметь отдельные значения, которые являются от нуля и один. Как ни странно, если вы используете цифры больше одного, цвет становится ярче. Я случайно использовал 255 вместо 1, когда я создал скриншот выше, поэтому, если вы произошли запускать этот код и увидеть более приглушенный набор цветов, поэтому.

Чтобы сделать примеры чрезвычайно простыми, мы импортируем только kivy’s App, кнопку и классы Boxlayout. Класс BoxLayout принимает несколько аргументов, но мы сосредоточимся на следующем 3: ориентация, прокладки и расстояние. Поскольку BoxLayout – это подкласс макета и виджета, он наследует многие другие методы и аргументы ключевых слов, которые здесь не покрываются. Но обратно к аргументам, о которых мы заботимся о. прокладка Аргумент рассказывает Киве, сколько места должно быть между макетом и его детьми, тогда как Интервал Аргументы говорят, сколько расстояния между детьми должно быть между детьми.

Чтобы создать кнопки, мы используем простую петлю, которая циклал на небольшой диапазон чисел. Каждая итерация создает кнопку с случайным цветом фона и добавляет эту кнопку в экземпляр макета. Затем мы возвращаем макет в конце.

Вертикальный пример BoxLayout в Vboxlayoutexample Класс немного отличается тем, что я думал, что это будет весело иметь возможность установить ориентацию программно. Код в значительной степени то же самое, за исключением того, что я добавил Сворация метод. Обратите внимание, что если вы снова призываете Setorientation, он не будет никакого эффекта. Поскольку один из моих комментаторов так любезно указал, вам нужно будет связать ориентацию на приложение Orient Property или использовать язык KV для достижения этого.

Если вы прокомментируете звонок в Hboxlayoutexample В конце скрипта и ООН-комментируйте две другие линии, то вы должны в конечном итоге увидеть что-то подобное:

Обратите внимание, что когда вы не устанавливаете цвет фона, KIVY по умолчанию на темно-серый. Кивы не пытается выглядеть как родное приложение. Это может быть или не может быть большим для вас в зависимости от того, какую программу вы пытаетесь достичь, но их следует отметить. Теперь мы готовы узнать о вложении!

Гнездование Boxlayouts

Вложенные боклыки внутри друг друга довольно легко с Кивми тоже. Всякий раз, когда вы идете создать приложение с сложным интерфейсом, который потребуется вложенные сизеры, вы должны занять некоторое время, чтобы набросать макет с карандашом и бумагой. Затем вы можете нарисовать поля вокруг виджетов по-разному, чтобы помочь вам визуализировать, какие макеты вам понадобится и как вкладывать их друг в друга. Я нашел это довольно полезным с WxPython, и я думаю, что это относится к любому другому инструментальному инструментальному интерфейсу, у которого нет редактора WYSIWYG. Кстати, Boxlayouts очень мощные. Если вы знаете, что вы делаете, вы можете сделать только один интерфейс с ними в одиночку, просто используете умное гнездование.

Достаточно разговоров, давайте посмотрим на какой-то код!

Этот пример очень похож на последний. Дьявол в деталях, хотя. Здесь мы вложенный для цикла, который создает 3 boxlayouts, которые содержат 5 кнопок кусок. Затем каждая макет вставляется в макет верхнего уровня в конце каждой итерации во внешней петле. Если вы пропустили это, прокрутите обратно, чтобы увидеть, как оказалось. Хитрость состоит в том, чтобы создать один верхний или основной макет и добавить к нему другие макеты. Теперь давайте обратим наше внимание на изучение того, как делать эти вещи с языком кВ.

KV + Python и Boxlayout

Это почти всегда немного больно, чтобы выучить новый язык. К счастью, язык KV на самом деле внимательно следит за Python, включая требование Python с использованием уровней вдавливания для обозначения, когда секция кода начинается и заканчивается. Вы можете потратить несколько минут чтения о языке кВ на Wivy веб-сайт Отказ Всякий раз, когда вы будете готовы, мы можем продолжить. Сначала мы начнем с кода Python:

Этот код намного проще, чем наши предыдущие примеры, но это также довольно таинственный. Прежде всего, мы создаем пустой подкласс Boxlayout. Затем мы создаем наш класс App, который имеет построить Способ, который просто возвращает экземпляр пустой класс BoxLayout. Что тут происходит? Ну, мы должны посмотреть на файл KV, чтобы узнать!

Когда вы сохраняете код выше, вам придется назвать его таким же, как класс App, но с помощью .kv вместо .py и в нижнем регистре. Это означает, что имя этого файла KV должно быть kvboxlayout.kv Отказ Вы отметите, что вам также необходимо отложить приложение часть имени класса, так что KvBoxLayoutApp становится kvboxlayout. Да, это немного запутано. Если вы не будете следовать за конвенциями именования правильно, файл будет работать, но у вас будет пустой черный W