Создание настольных Python приложений с графическим интерфейсом пользователя - Тимур Машнин
Шрифт:
Интервал:
Закладка:
Значение, выдаваемое переключателем — это True или False.
И к переключателю может быть присоединена функция обратного вызова, чтобы получить значение переключателя.
Когда переключатель выполняет переход из состояния в состояние, запускается обратный вызов, и любое другое действие может быть выполнено в зависимости от состояния.
Spinner — это виджет, который позволяет быстро выбрать одно значение из предопределенного набора значений.
В состоянии по умолчанию спиннер показывает текущее выбранное значение.
При касании спиннера отображается раскрывающийся список со всеми другими доступными значениями, из которых пользователь может выбрать значение.
И к спиннеру методом bind может быть прикреплен обратный вызов для получения уведомлений о выборе значения пользователем.
Виджет ProgressBar используется для визуализации прогресса долго выполняющейся задачи.
В настоящее время поддерживается только горизонтальный режим.
Индикатор выполнения не имеет интерактивных элементов и является виджетом только для отображения прогресса выполнения.
Здесь мы показываем в всплывающем окне прогресс бар и при открытии окна запускаем таймер, который выполняет функцию увеличения значения прогресс бара.
Виджет Bubble — это меню или небольшое всплывающее окно, в котором пункты меню расположены вертикально или горизонтально.
И этот виджет содержит стрелку, указывающую в выбранном направлении.
Чтобы выбрать направление стрелки, используется параметр arrow_pos виджета.
Ориентация виджета по умолчанию горизонтальная, но вы можете изменить ее с помощью параметра orientation.
Чтобы добавить элементы в виджет, используется метод add_widget.
Виджет TabbedPanel предоставляет вкладки, с областью заголовка для кнопок вкладок и областью содержимого для отображения содержимого текущей вкладки.
И TabbedPanel предоставляет одну вкладку по умолчанию, которую можно отключить параметром do_default_tab.
Отдельная вкладка называется TabbedPanelHeader.
Это специальная кнопка, содержащая контент.
Сначала вы добавляете TabbedPanelHeader, а затем устанавливаете ее содержимое.
Этим контентом может быть любой виджет.
Это может быть компоновка с иерархией виджетов или отдельный виджет, например метка или кнопка.
Виджет
Scatter используется для создания интерактивных виджетов, которые можно перемещать, вращать и масштабировать двумя или более пальцами в системе мультитач.
Дочерние элементы виджета располагаются также как и в RelativeLayout.
Таким образом, при перетаскивании Scatter положение дочерних элементов не меняется, изменяется только положение Scatter.
И размер Scatter не влияет на размер его дочерних элементов.
Если вы хотите изменить размер Scatter, используйте scale, а не size.
Параметр scale трансформирует как Scatter, так и его дочерние элементы.
И Scatter — это не компоновка. Вы сами должны управлять размером дочерних виджетов.
По умолчанию Scatter не имеет графического представления — это только контейнер.
Идея состоит в том, чтобы объединить Scatter с другим виджетом, например с изображением или иерархией виджетов.
Классы Animation и AnimationTransition используются для анимации свойств виджета.
И вы должны указать имя свойства и целевое значение.
Чтобы использовать анимацию, нужно создать объект Animation и далее нужно использовать объект Animation в виджете.
Здесь мы создаем объект анимации.
Этот объект можно сохранить и повторно использовать в разных виджетах.
Здесь + — это последовательный шаг, а & — параллельный шаг.
Далее мы применяем анимацию к кнопке, переданную в аргументе "instance".
Компоновка Floatlayout позволяет размещать элементы относительно друг друга в зависимости от текущего размера и высоты окна.
То есть Floatlayout позволяет размещать элементы, используя так называемое относительное положение.
Это означает, что вместо того, чтобы определять конкретную позицию или координаты, мы будем размещать виджеты, используя процент от размера окна.
И когда мы изменяем размеры окна, все, что помещается в окне, соответственно изменяет свой размер и положение.
Это делает приложение более надежным и масштабируемым в соответствии с размером окна.
При использовании FloatLayout мы используем свойства pos_hint и size_hint дочерних элементов.
По умолчанию все виджеты имеют свой size_hint = (1, 1).
Чтобы создать кнопку с шириной 50 % и 25 % от высоты компоновки и расположенную в точке (20, 20), мы определяем size_hint=(.5, 25) и pos=(20, 20).
Чтобы создать кнопку, нижний левый угол которой будет находиться минус 20 % с каждой стороны, мы определяем pos_hint={'x':.2, 'y':.2}.
Gridlayout — это компоновка, которая упорядочивает дочерние элементы в матричном формате.
Она берет доступное пространство (квадрат) и делит это пространство на строки и столбцы, а затем добавляет виджеты в соответствии с полученными ячейками.
Здесь мы не можем явно разместить виджет в определенном столбце / строке.
Каждому дочернему элементу автоматически назначается определенная позиция.
И для этой компоновки нужно указать как минимум количество столбцов или строк.
Если мы не укажем столбцы или строки, программа выдаст исключение.
Первоначальный размер компоновки задается свойствами col_default_width и row_default_height.
Мы можем установить размер по умолчанию, используя свойство col_force_default или row_force_default.
Это заставит макет игнорировать размеры дочерних элементов и использовать размер по умолчанию компоновки.
Чтобы настроить размер одного столбца или строки, используйте cols_minimum или rows_minimum.
Компоновки StackLayout и Boxlayout очень похожи.
И здесь и там можно упорядочивать виджеты вертикально или горизонтально.
Но с помощью StackLayout вы можете комбинировать ориентации.
Имеется 4 ориентации по строкам и 4 по столбцам, это справа налево или слева направо, сверху вниз или снизу вверх.
Компоновка AnchorLayout размещает свои дочерние элементы по границе контейнера (сверху, снизу, слева, справа) или по центру.
AnchorLayout можно инициализировать с помощью параметров:
anchor_x и anchor_y — могут быть переданы значения «слева», «справа» и «по центру».
Таким образом, здесь для выбора места размещения виджетов в родительском контейнере, есть 9 различных областей компоновки, верхний левый, верхний центр, верхний правый, центральный левый, центральный, центральный правый, нижний левый, нижний центральный и нижний правый.
Компоновка Relativelayout похожа на компоновку FloatLayout, разница в том, что дочерние виджеты компоновки Relativelayout располагаются относительно компоновки, а не относительно окна.
Эта компоновка работает так же, как FloatLayout, но свойства позиционирования (x, y, center_x, right, y, center_y и top) относятся к размеру компоновки, а не к размеру окна.
И дочерние виджеты перемещаются при изменении положения компоновки.
То есть координаты дочернего виджета остаются такими же, так как они всегда определяются относительно родительской компоновки.
И параметры