Программирование gui на Python
В языке программирования Python в качестве стандартного модуля выступает специальная библиотека Tkinter. Поэтому при ее использовании нет необходимости в установке дополнительных элементов. Несмотря на то, что в Python имеется множество фреймворков, именно Tkinter обладает огромным количеством преимуществ.
В первую очередь к ним стоит отнести кроссплатформенность. Это указывает на то, что один и тот же код может использоваться на разных операционных системах. Отображение визуальных элементов будет происходить через собственные элементы используемой операционной системы. По сравнению с прочими библиотеками Tkinter принадлежит к категории самых легких, в особенности просто с ней работать на этапе создания GUI приложений.
Особенности создания окна приложения в Tkinter
Язык программирования Python открывает возможности для создания программ с графическим интерфейсом. В этом случае на помощь приходит Tkinter. Он выглядит в виде отдельно встроенного модуля, который имеет такие графические элементы, как текстовые поля, кнопки и прочие элементы.
Среди базовых элементов, на которые в обязательном порядке стоит обратить внимание на этапе создания графических программ, является процесс создания окна. После того, как будет создано основное окно, можно приступать к добавлению кнопок. Поэтому на первом этапе нужно приступить к созданию окна. Для этого можно применить следующий скрипт:
Чтобы создать графическое окно, необходимо использовать специальный конструктор Тк (), который находится в составе модуля Tkinter. Окно, которое будет создаваться, автоматически будет присвоено переменной root. Управление всеми необходимыми атрибутами окна будет происходить именно через эту переменную. Для установления заголовка окна целесообразно применить метод title ().
Установка размера окна реализуется посредством использования метода geometry (). Для этого целесообразно задать строку в таком формате «Ширина х Высота». В том случае, если на этапе создания окна не происходит процесс вызывания метода geometry (), это указывает на то, что окно занимает то свободное пространство, которое нужно для того, чтобы разместить внутреннее содержимое.
Чтобы окно отобразилось, первоначально нужно вызвать такой метод, как mainloop (). С его помощью происходит процесс запуска цикла обработки событий, которые происходят на этапе взаимодействия с пользователями.
В том случае, если запустить скрипт, можно увидеть такое окно:
Что же касается позиции окна, то первоначально по умолчанию оно будет находиться в левом верхнем углу рабочего экрана. В том случае, если есть необходимость в изменении положения, следует в метод geometry () внести следующие изменения:
После выполнения скрипта, находящегося выше, окно будет размещаться на 250 пикселей ниже и на 300 пикселей правее от первоначального положения.
Особенности работы с виджетами
Что же касается виджетов, которые есть в библиотеке Tkinter, то их выделяют достаточно большое количество. Например, можно рассмотреть такой виджет, как Button (Кнопка). Среди обязательных параметров, которые есть у класса Button, выделяют объект, которому он принадлежит. В данном случае это будет окно root.
Пример, по которому создается кнопка:
Что же касается свойств, которые есть у кнопки, то среди них стоит выделить цвет фона, надпись, размер и прочие характеристики. Например, команда, которая позволит добавить к кнопке текст, будет выглядеть следующим образом:
Для того, чтобы в окне программы появилась кнопка, нужно применить специальный метод pack (). Рассмотрим пример, по которому происходит процесс добавления в окно кнопки:
Стоит обратить внимание на то, что в процессе нажатия на кнопку ничего происходить не будет. Это связано с тем, что не создано событие. Алгоритм или же действия достаточно часто создаются в виде функции, после чего происходит вызывание необходимым событием.
Например, можно создать функцию:
В качестве параметра event будет выступать какое-то событие. События, которые отвечают за выполнение при нажатии левой кнопки мыши, будут задаваться, как «Button-1». Это событие в последующем должно быть связано вместе с обработчиком. Для того, чтобы это реализовать, поможет метод bind.
Синтаксис будет выглядеть следующим образом:
Все вышеперечисленные примеры можно соединить в единую программу, которая будет выглядеть следующим образом:
В том случае, если запустить написанную программу и нажать на кнопку, то перед программистом появится следующее окно:
Добавление виджета ScrolledText
В том случае, если есть необходимость в добавлении виджета ScrolledText, здесь нужно использовать целый класс ScrolledText:
Для того, чтобы автоматически не произошло заполнение всего окна, нужно в обязательном порядке указать для ScrolledText такие параметры, как высота и ширина:
В результате выполнения программы появиться такое окно:
В том случае, если есть необходимость в настройке определенных свойств ScrolledText, нужно использовать специальный метод под названием insert:
Для того, чтобы выполнить полную очистку представленного виджета, стоит использовать метод delete:
Однострочное текстовое поле в Tkinter
Для осуществления ввода информации со стороны пользователя используется текстовое поле. При этом поле может быть, как однострочным, так и многострочным, что нужно учитывать при его создании.
В качестве однострочного текстового поля выступает Entry. Из текстового поля есть возможность забирать текст посредством применения метода get. Вставка текста непосредственно в само текстовое поле может быть реализовать посредством использования метода insert. Что же касается удаления текста из текстового поля, то здесь работает тот самый метод delete.
Рассмотренный ниже фрагмент кода:
приведет к тому, что после того, как пользователь будет нажимать на кнопку несколько раз подряд, будет добавляться новая фраза «Tkinter – GUI» в поле перед строкой, которая уже существует:
В том случае, если в insert вместо 0 поставить end, то добавление текста будет происходить непосредственно в конце. Вставка в любое место в середине строки будет осуществляться в том случае, если указать конкретное число-индекс знакоместа.
Что же касается метода delete, то он одновременно может принимать несколько значений. Если же рассматривать первый случай, то удаление символа будет происходить в указанной позиции. Если же смотреть на второй случай, то проводиться срез между несколькими индексами, которые будут указаны заблаговременно. При этом, сюда не должен попасть последний индекс.
В том случае, если необходима полная очистка текстового поля, то нужно одновременно использовать два аргумента. Первым из них является 0, после чего нужно указать аргумент end.
Позиционирование в Tkinter
В том случае, если в языке программирования Пайтон есть необходимость осуществить для элементов их позиционирование в окне, для этого могут применяться различные способы. Если же рассматривать самый простой, то здесь стоит обратить внимание на вызов так называемого метода pack (). Представленный метод в процессе работы может принимать следующих значений:
- expand – заполнение всего пространства контейнера будет осуществлено в том случае, если свойство будет равно True;
- fill – отвечает за то, будет ли происходить процесс растягивания виджета для того, чтобы заполнить все находящееся вокруг пространство. Представленный параметр может иметь разные значения. Среди них стоит обратить внимание на следующие: NONE – элемент растягиваться не будет; х – растягивание произойдет по горизонтали; Y — растягивание произойдет по вертикали; BOTH – одновременное растягивание элемента, как по вертикали, так и по горизонтали;
- side–предоставляет возможность осуществить процесс выравнивания виджета по одной из сторон. Для выравнивания по верхнему краю применяется команда TOP, для выравнивания по нижнему краю – команда BOTTOM, соответственно для выравнивая по правой и левой стороне команды RIGHT и LEFT.
Например, можно создать код программы, который поможет растянуть на всю форму кнопку посредством применения команд fill и expand:
Для использования параметра side:
Осуществляя между собой комбинирование вышеперечисленных методов, есть возможность растянуть элемент в вертикальном направлении:
Для того, чтобы осуществить максимально точную настройку позиционирования, целесообразно использовать метод place (). Посредством его использования есть возможность задать конкретные значения высоты и ширины для элемента, установить смещение элемента в горизонтальном или же вертикальном направление на определенное число относительно левого верхнего угла, установить формат границы применяемого элемента и опции, осуществляющие такой процесс, как растяжение элемента.
Стоит обратить внимание на то, что в процессе использования метода place () нет надобности в одновременном применении метода pack () для того, чтобы придать элементу свойства видимости.