Создание настольных Python приложений с графическим интерфейсом пользователя - Тимур Машнин
Параметр пропорции определяет соотношение изменения виджетов в заданной ориентации.
Предположим, у нас есть три элемента с пропорциями 0, 1 и 2.
И они добавлены в горизонтальный BoxSizer.
Элемент с пропорцией 0 вообще не изменится.
Элемент с пропорцией 2 изменится в два раза больше, чем элемент с пропорцией 1 по горизонтали.
С помощью параметра flag вы можете дополнительно настроить поведение виджетов в BoxSizer.
Здесь мы можем контролировать границу border между виджетами, добавляя промежуток между виджетами в пикселях.
Чтобы применить границу, нам нужно определить стороны, где будет использоваться граница.
И мы можем комбинировать стороны, например LEFT | BOTTOM.
И наконец сайзер задается для контейнера с помощью метода setSizer.
Компоновка GridSizer размещает виджеты в двухмерной таблице.
И каждая ячейка в этой таблице имеет одинаковый размер.
Здесь в конструкторе мы указываем количество строк и столбцов в таблице, а также вертикальное и горизонтальное расстояние между ячейками.
Здесь мы использовали метод Add. И виджеты размещаются внутри таблицы в том порядке, в котором они добавляются. Сначала заполняется первая строка, затем вторая строка и т. д.
В методе Add мы используем параметры flag и border, которые определяют ширину границы ячейки.
Компоновка
FlexGridSizer
похожа на
GridSizer
.
Она также размещает свои виджеты в двухмерной таблице.
Но в то время как ячейки GridSizer имеют одинаковый размер, в FlexGridSizer строки и столбцы не обязательно имеют одинаковую высоту или ширину.
Поэтому эта компоновка обеспечивает немного больше гибкости при размещении элементов в ячейках.
Здесь размер каждой ячейки не одинаков, как в GridSizer.
И ширина и высота ячеек в одном столбце или строке может быть увеличена с помощью методов AddGrowableRow и AddGrowableCol.
Первый параметр здесь индекс строки или индекс столбца, а второй параметр — это доля прироста.
Компоновка GridBagSizer — это самая гибкая компоновка в wxPython.
Эта компоновка позволяет явно позиционировать элементы.
Элементы также могут занимать более одной строки или столбца.
И мы добавляем элементы с помощью метода Add.
Здесь параметр pos указывает положение в сетке.
В верхней левой ячейке pos (0, 0).
Параметр span — это диапазон элемента, например span (3, 2) — это виджет занимает 3 строки и 2 столбца.
Параметры флаг и граница обсуждались в BoxSizer.
И ширина и высота ячеек в одном столбце или строке может быть увеличена с помощью методов AddGrowableRow и AddGrowableCol.
Таким образом, GridBagSizer — это универсальная компоновка.
Здесь дочерний виджет можно добавить в определенную ячейку сетки.
Кроме того, дочерний виджет может занимать более одной ячейки по горизонтали или вертикали.
Диалоговые окна являются неотъемлемой частью большинства приложений с графическим интерфейсом.
Диалог используется для ввода данных, изменения данных, изменения настроек приложения и т. д.
И мы можем использовать предопределенные диалоги, такие как окна сообщений, диалоги шрифтов или цветов, или создавать свои собственные диалоги.
Окно сообщения предоставляет пользователю краткую информацию.
И класс MessageBox показывает небольшое диалоговое окно.
Здесь мы предоставляем три параметра: текстовое сообщение, заголовок сообщения и флаги. Флаги используются для отображения различных кнопок и значков.
В нашем случае мы показываем кнопку ОК и значок информации.
Создать диалоговое окно сообщения просто.
Мы устанавливаем диалог как окно верхнего уровня, указав None в качестве родителя.
Чтобы отобразить диалог на экране, мы вызываем метод ShowModal.
Чтобы создать диалоговое окно about, мы должны создать два объекта — wx.adv.AboutDialogInfo и wx.adv.AboutBox.
Для создания собственного диалога, мы должны создать класс, который наследует от виджета wx.Dialog.
Мы создаем экземпляр этого класса, а затем мы вызываем метод ShowModal.
Позже мы должны уничтожить наш диалог с помощью метода Destroy.
Теперь давайте пройдемся по виджетам библиотеки wxPython.
Button — это простой виджет, который содержит текстовую строку и используется для запуска действия.
В этом примере мы создаем кнопку «Закрыть», которая при нажатии завершает работу приложения.
В конструкторе виджета мы указываем метку для кнопки и позицию на панели.
Методом Bind мы связываем событие с методом, и событие запускается, когда мы нажимаем на кнопку.
Здесь мы указываем обработчик для этого события, в котором мы завершаем приложение с помощью метода Close.
Виджет ToggleButton — это кнопка, которая имеет два состояния: нажата и не нажата.
И вы переключаетесь между этими двумя состояниями, нажимая на кнопку.
В этом примере мы меняем цвет панели, нажимая на кнопку.
Здесь создается виджет ToggleButton и панель, цвет которой мы будем изменять с помощью кнопки-переключателя.
Обработчик события Toggle вызывается, когда мы нажимаем кнопку.
В этом методе мы устанавливаем цвет фона панели в зависимости от того нажата кнопка или нет.
Виджет StaticText отображает одну или несколько строк текста, доступного только для чтения.
Здесь мы создаем шрифт для текста.
И устанавливаем шрифт с помощью метода SetFont.
Виджет StaticLine отображает в окне простую строку, которая может использоваться как разделительная строка.
Виджет StaticBox используется для логической группировки различных виджетов.
И эти виджеты должны быть родственными, а не дочерними по отношению к статическому блоку.
Здесь включаемые виджеты регулируются размерами рамки статического блока.
Какая будет рамка, столько виджетов и поместится в блок.
Виджет ComboBox — это выпадающий список с кнопкой.
Когда вы нажимаете кнопку, появляется список.
И пользователь может выбрать только один вариант из предоставленного списка строк.
При создании виджета ComboBox, параметр choices принимает список строк, отображаемых в поле со списком.
Стиль READONLY делает строки списка доступными только для чтения.
И когда мы выбираем параметр из поля со списком, запускается событие COMBOBOX.
К этому событию мы подключаем обработчик события OnSelect.
CheckBox — это виджет, который имеет два состояния: включен и выключен.
Здесь мы проверяем состояние виджета CheckBox с помощью метода GetValue.
И событие CHECKBOX запускается, когда мы щелкаем по виджету CheckBox.
При запуске этого события вызывается обработчик ShowOrHide.
RadioButton — это виджет, который позволяет пользователю выбрать один вариант из группы параметров.
Группа переключателей определяется тем, что первый переключатель в группе содержит стиль GROUP.
Все остальные переключатели, определенные после первого переключателя с этим