Создание настольных Python приложений с графическим интерфейсом пользователя - Тимур Машнин
Шрифт:
Интервал:
Закладка:
А для выбора цвета Tkinter предоставляет всплывающее меню.
Для этого мы должны импортировать модуль colorchooser и использовать метод askColor.

Tkinter представляет возможность создавать раскрывающиеся меню, то есть списки в верхней части окна, которые появляются или раскрываются, если вы нажимаете на такой элемент, как, например, «Файл», «Редактировать» или «Справка».
Меню добавляется в окно с помощью метода config и параметра menu.
Далее метод add_cascade создает новое иерархическое меню, связывая данное меню с родительским меню.
Метод add_command добавляет пункт меню в меню.
При этом параметр command связывает с пунктом меню функцию.

Кнопка меню — это часть раскрывающегося меню, которое постоянно отображается на экране.
И кнопка меню может отображать варианты выбора для этого меню, когда пользователь нажимает на нее.
Здесь параметр relief определяет эффекты затенения границ кнопки.
Метод add_checkbutton добавляет флажок как пункт меню, так как каждая кнопка меню связана с виджетом меню.

Теперь давайте познакомимся с менеджерами компоновки или менеджерами геометрии, как их также иногда называют.
Tkinter имеет три менеджера компоновки pack, grid и place.
И не разрешено смешивать три менеджера компоновки в одном главном окне!
Менеджеры геометрии выполняют различные функции, такие как расположение виджетов на экране, регистрация виджетов в системе, управление отображением виджетов на экране.
Размещение виджетов на экране включает в себя определение размера и положения компонентов.
Виджеты могут предоставлять информацию о размере и выравнивании менеджерам геометрии, но менеджеры геометрии всегда имеют последнее слово по позиционированию и размеру.
Pack — самый простой в использовании из трех менеджеров геометрии.
Вместо того, чтобы точно объявлять, где должен отображаться виджет на экране дисплея, мы можем объявить позиции виджетов относительно друг друга с помощью команды pack.
Параметр expand команды pack — если установлено значение true, виджет расширяется, чтобы заполнить любое пространство родительского виджета.
Параметр fill определяет, заполняет ли виджет дополнительное пространство, выделенное ему, или сохраняет свои собственные минимальные размеры: NONE (по умолчанию), X (заливка только по горизонтали), Y (заливка только по вертикали) или BOTH (заливка как по горизонтали, так и по вертикали).
Параметр side определяет, какая сторона родительского виджета общая: TOP (по умолчанию), BOTTOM, LEFT или RIGHT.
Параметр padx — внешний отступ по горизонтали.
Параметр pady — внешний отступ по вертикали.
Параметр ipadx — внутренний отступ по горизонтали.
Параметр ipady — внутренний отступ по вертикали.

Компоновка Place позволяет явно установить положение и размер виджета в абсолютном выражении или относительно другого виджета.
То есть этот менеджер геометрии упорядочивает виджеты, помещая их в определенную позицию в родительском виджете.
Параметр anchor метода place позволяет указать привязку виджета, это может быть N, E, S, W, NE, NW, SE или SW, то есть направления по компасу, указывающие углы и стороны виджета, по умолчанию это NW (левый верхний угол).
Параметр bordermode указывает, что другие параметры игнорируют границу родителя или нет.
Параметры height, width указывают высоту и ширину в пикселях.
Параметры x, y указывают смещение по горизонтали и вертикали в пикселях.

Компоновка Grid помещает виджеты в двухмерную таблицу, которая состоит из ряда строк и столбцов.
И положение виджета определяется номером строки и столбца.
То есть этот менеджер геометрии организует виджеты в виде таблицы в родительском виджете.
Виджеты с одинаковым номером столбца и разными номерами строк будут располагаться друг над другом.
Соответственно, виджеты с одним и тем же номером строки, но с разными номерами столбцов будут находиться в одной «строке» и будут располагаться рядом друг с другом.
При этом размер сетки не нужно определять, потому что менеджер автоматически определяет наилучшие размеры для используемых виджетов.

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

Виджет Listbox используется для отображения списка элементов, из которого пользователь может выбрать несколько элементов.
Метод get возвращает кортеж, содержащий текст строк с индексами от первого до последнего включительно.
Если второй аргумент опущен, возвращает текст строки, ближайшей к первой.

Модуль Tkinter предлагает широкий спектр виджетов, которые можно использовать для разработки приложений с графическим интерфейсом.
Модуль tkinter.ttk служит улучшением уже существующего модуля tk.
И модуль Ttk предоставляет 18 виджетов, 12 из которых есть в модуле Tkinter.
Добавленные виджеты — это Combobox, Notebook, Sizegrip, Progressbar, Separator и Treeview.
Здесь мы показываем создание виджета с вкладками.
Виджет ttk.Notebook управляет коллекцией окон и отображает их по одному.
Каждое дочернее окно связано с вкладкой.
И пользователь может выбирать по одной вкладке за раз, чтобы просмотреть содержимое окна.
Kivy

Kivy — это многоплатформенная среда разработки приложений для Python, которая позволяет разрабатывать приложения для Windows, Linux, Android, macOS, iOS и Raspberry Pi.

Kivy позволяет разрабатывать мобильные приложения с поддержкой мультитач и дает возможность создать приложение один раз и использовать его на всех устройствах.
Она также позволяет получать доступ к мобильным API-интерфейсам для управления такими вещами, как камера на телефоне, отслеживание GPS, вибратор и т. д.
Kivy включает в себя различные модули для воспроизведения видео файлов и потоков.
Kivy использует широкий спектр виджетов, поддерживающих мультитач и жесты.
Киви использует PyGame для простого создания игр.
И PyGame поставляется с различными модулями для рисования форм, работы с цветами и воспроизведения музыки.

Для разработки Киви приложения создадим проект в
PyCharm
и в окне терминала наберем команду установки Киви.

Далее мы можем запустить готовые примеры приложений Киви.

И мы можем сами теперь создавать Киви приложения.
Прежде всего мы должны импортировать kivy.
Теперь, чтобы создать интерфейс Kivy, нам нужно импортировать модуль приложения App.
Далее импортируем метку.
И определим класс с функцией, которая возвращает корневой виджет — метку.
Затем инициализируем класс и вызовем его метод run, запустив приложение Киви.
К метке мы также можем применить стиль, то есть увеличить